MySQL 8.0 concat从中文字列返回system.byte []

时间:2018-08-20 07:07:28

标签: c# mysql

在我的公司中,我们使用与MySQL服务器一起工作的自制ERP系统。 ERP系统使用Visual Studio 2017 C#进行编码,服务器版本为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引发以下错误:

“不支持关键字。参数名:尊重二进制标志”

我发现concat仅在尝试连接column1和column2时起作用,因此我寻找了区别,并注意到column1和2为varchar(50),column3和4为中文本。

我不明白为什么变量的转换不起作用,或者“尊重二进制标志”参数出了什么问题。在其他情况下,两者似乎都能解决问题。有人提示我如何轻松解决此问题吗?在此先感谢..

1 个答案:

答案 0 :(得分:2)

在连接或合并后尝试使用强制转换,以确保结果是所需的所需类型。我使用了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;