繁体   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