[英]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.