2014-02-25 31 views
7

如果我想在MySQL的具体数字列的总和,我做怪异的行为

SELECT SUM(MyColumn) FROM MyTable WHERE 1; 

这将返回例如100号

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

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

而是获得Sum is: 100我得到这样的事情546573743a20343030

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

UPDATE

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

铸造为varchar不工作:让SQL语法错误。

+0

呀,绝对是一个特点。尝试在一段时间内铸造一次。 CONCAT('Sum是:',CAST(SUM(MyColumn)AS varchar(20))' – Kermit

+0

1)为什么downvote?这是一个很好的问题。 2)我试图铸造,不起作用。 – NumberFour

+0

“MyColumn”的数据类型是什么?“SUM(MyColumn)”返回什么值? – Lamak

回答

6

由于FreshPrinceOfSO在我的问题下面的评论中建议,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;