在MySql中SUM和CONCAT的奇怪行为

Num*_*our 7 mysql aggregate-functions

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

SELECT SUM(MyColumn) FROM MyTable WHERE 1;
Run Code Online (Sandbox Code Playgroud)

这将返回例如数字100.

但我想在总和值前加上一些文字,所以我这样做

SELECT CONCAT('Sum is: ',SUM(MyColumn)) FROM MyTable WHERE 1;
Run Code Online (Sandbox Code Playgroud)

但不是让Sum is: 100我得到类似的东西546573743a20343030.

这是一个错误还是一个功能?我究竟做错了什么?

UPDATE

SELECT CONCAT('Sum is: ',CAST(SUM(MyColumn) AS varchar(20))) FROM MyTable WHERE 1;
Run Code Online (Sandbox Code Playgroud)

转换为varchar不起作用:获取SQL语法错误.

Num*_*our 8

正如FreshPrinceOfSO在下面的评论中提出我的问题,MySQL服务器不处理强制转换varchar.

所以即使查询

SELECT CONCAT('Sum is: ',CAST(SUM(MyColumn) AS varchar(20))) FROM MyTable WHERE 1;
Run Code Online (Sandbox Code Playgroud)

导致语法错误,转换为char工作正常:

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