MySql中SUM和CONCAT的奇怪行为
如果我想在MySQL中对特定的数字列求和,我会这样做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
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 usechar
aah,获取它。Char有效@NumberFour显然MySQL不接受varchar
作为强制转换类型。另一个很棒的“功能”很有魅力!非常感谢你。