在我的公司里,我们使用的是一个自制的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会引发以下错误:
“不支持关键字。parametername:尊重二进制标志“
我发现concat只在尝试连接column1和column2时起作用,所以我寻找了一个区别,发现column1和column2是varchar(50),column3和column4是mediumtext。
我不明白为什么变量的转换不起作用,或者“尊重二进制标志”参数有什么问题。在其他情况下,两者似乎都能解决问题。有人能给我一个简单的方法来解决这个问题吗?提前谢谢。。
1条答案
按热度按时间wswtfjt71#
尝试在concat或coalesce之后使用cast,以确保结果是所需的类型。我用了255个字符,但你可以选择你需要的大小。下面是我用来测试这个的代码。