Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MySQL 8.0 concat从mediumtext列返回system.byte[]_C#_Mysql - Fatal编程技术网

C# MySQL 8.0 concat从mediumtext列返回system.byte[]

C# MySQL 8.0 concat从mediumtext列返回system.byte[],c#,mysql,C#,Mysql,在我的公司,我们使用一个自制的ERP系统,该系统与MySQL服务器一起工作。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[]对象 我发现了

在我的公司,我们使用一个自制的ERP系统,该系统与MySQL服务器一起工作。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[]对象

我发现了一篇关于这个主题的文章:

根据它,我尝试用以下方式修改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和column2是varchar(50),column3和Column4是mediumtext


我不明白为什么变量的转换不起作用,或者“尊重二进制标志”参数有什么问题。在其他情况下,两者似乎都能解决问题。有没有人能给我一个简单的方法来解决这个问题?提前谢谢

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

欢迎光临。请注意,
visual studio
标记应仅用于有关visual studio IDE的问题,而不是visual studio中编写的代码。您的查询中是否有联合?根据我的测试,concat(varchar(50),mediumtext)返回longtext。您的代码需要使用longtext吗?我不使用union操作符。对于第二个问题:对不起,我不能说我的代码需要使用什么。我不是专业的程序员,只是得到了别人几年前建立的这个项目。我只能说,该命令在MySqlDataAdapter中用作.SelectCommand属性,然后填充数据集。当我尝试在数据集上使用“Like”运算符时,会发生错误,因为无法在系统上操作“Like”。字节[]。这能回答你的问题吗,哈桑?谢谢你的帮助。好的,你给了我一个可能的解决方案。我没有意识到我需要向cast操作符添加(255)。在我这么做之后,它不再返回longtext,而是返回varchar。再次感谢。但是,如果有一种方法可以一次性解决所有查询的问题,比如我尝试使用“尊重二进制标志”参数..@EmKay89,那么知道这一点还是很有意思的。将不得不做更多的测试。目前正在下载MySQL和VS。@EmKay89所以我创建了一个测试应用程序,没有像你一样的错误。您使用的是哪个版本的MySql.Data package?我看了一下,它是1.0.10.1版。因为这对我来说似乎有点老了,所以我对一个最新版本进行了更新,我可以通过NuGet软件包安装它。这就是诀窍,现在“尊重二进制标志”的作品!谢谢你的帮助,作为一个初学者,我不知道从哪里开始寻找。@EmKay89太好了。只需进行适当的测试,以确保现在新安装的所有内容不会产生意外的软件效果。