Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.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
MySql中SUM和CONCAT的奇怪行为_Mysql_Aggregate Functions - Fatal编程技术网

MySql中SUM和CONCAT的奇怪行为

MySql中SUM和CONCAT的奇怪行为,mysql,aggregate-functions,Mysql,Aggregate Functions,如果我想在MySQL中对特定的数字列求和,我会这样做 SELECT SUM(MyColumn) FROM MyTable WHERE 1; 例如,返回数字100 但是我想在求和值前加上一些文本,所以我这样做了 SELECT CONCAT('Sum is: ',SUM(MyColumn)) FROM MyTable WHERE 1; 但是我没有得到Sum是:100而是得到了类似546573743a20343030的东西 这是一个bug还是一个特性?我做错了什么 更新 SELECT CONCAT

如果我想在MySQL中对特定的数字列求和,我会这样做

SELECT SUM(MyColumn) FROM MyTable WHERE 1;
例如,返回数字100

但是我想在求和值前加上一些文本,所以我这样做了

SELECT CONCAT('Sum is: ',SUM(MyColumn)) FROM MyTable WHERE 1;
但是我没有得到
Sum是:100
而是得到了类似
546573743a20343030
的东西

这是一个bug还是一个特性?我做错了什么

更新

SELECT CONCAT('Sum is: ',CAST(SUM(MyColumn) AS varchar(20))) FROM MyTable WHERE 1;
强制转换到varchar不起作用:获取SQL语法错误。

正如我问题下面的评论中所建议的,MySQL服务器不处理对
varchar的强制转换

因此,即使查询

SELECT CONCAT('Sum is: ',CAST(SUM(MyColumn) AS varchar(20))) FROM MyTable WHERE 1;
导致语法错误,转换为
char
效果很好:

SELECT CONCAT('Sum is: ',CAST(SUM(MyColumn) AS char(20))) FROM MyTable WHERE 1;

似乎适合我:MyColumn的类型是什么?您可以使用创建此问题的示例吗?@FreshPrinceOfSO:在没有
CAST
的情况下也可以正常工作:@NumberFour use
char
aah,获取它。Char有效@NumberFour显然MySQL不接受
varchar
作为强制转换类型。另一个很棒的“功能”很有魅力!非常感谢你。