簡體   English   中英

MySQL 8.0 concat 從 mediumtext 列返回 system.byte[]

[英]MySQL 8.0 concat returns system.byte[] from mediumtext columns

在我的公司,我們使用自制的 ERP 系統,該系統與 MySQL 服務器配合使用。 ERP 系統使用 C# 編碼和 Visual Studio 2017,服務器版本為 5.0。

我嘗試將 MySQL 從 5.0 版升級到當前的 8.0 版。 但是,帶有“concat”命令的 SQL 查詢似乎不再起作用。

例如查詢

Concat(Column1, Coalesce(Column2, ''), Column3, Coalesce(Column4, '')) As Result

不返回字符串,而是返回 system.byte[] 對象。

我找到了一篇關於這個主題的文章:

https://bugs.mysql.com/bug.php?id=37485

根據它,我嘗試通過以下方式修改SQL查詢:

Concat(cast(Column1 as char), Coalesce(cast(Column2 as char), ''), cast(Column3 as char), Coalesce(cast(Column4 as char), '')) As Result

但它仍然不斷返回 system.byte[]。

然后我嘗試添加

“Respect Binary flags=false” 

到連接字符串,但這也不起作用,visual studio 拋出以下錯誤:

“不支持關鍵字。參數名稱:尊重二進制標志”

我發現當我只嘗試連接 column1 和 column2 時,concat 可以工作,所以我尋找了不同之處,並注意到 column1 和 2 是 varchar(50),而 column3 和 4 是中文本。

我不明白為什么變量的轉換不起作用,或者“尊重二進制標志”參數有什么問題。 在其他情況下,兩者似乎都解決了問題。 有沒有人提示我如何以簡單的方式解決這個問題? 提前致謝 ..

嘗試在 concat 或 coalesce 之后使用 cast 以確保結果是您想要的所需類型。 我使用了 255 個字符,但您可以選擇所需的大小。 下面是我用來測試這個的代碼。

create table testing (
column1 varchar(50),
column2 mediumtext);

insert into testing values ('this','that');

CREATE table temp AS
select CAST(coalesce(column1, column2) AS char(255)) from testing;

DESCRIBE temp;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM