在我的公司中,我们使用与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为中文本。
我不明白为什么变量的转换不起作用,或者“尊重二进制标志”参数出了什么问题。在其他情况下,两者似乎都能解决问题。有人提示我如何轻松解决此问题吗?在此先感谢..
答案 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;