mysql 8.0 concat从mediumtext列返回system.byte[]

epggiuax  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(347)

在我的公司里,我们使用的是一个自制的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。
我不明白为什么变量的转换不起作用,或者“尊重二进制标志”参数有什么问题。在其他情况下,两者似乎都能解决问题。有人能给我一个简单的方法来解决这个问题吗?提前谢谢。。

wswtfjt7

wswtfjt71#

尝试在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;

相关问题