问题
If I want to make a sum of a specific numeric column in MySQL, I do
SELECT SUM(MyColumn) FROM MyTable WHERE 1;
This returns for example number 100.
But I'd like to prepend some text to the sum value, so I do
SELECT CONCAT('Sum is: ',SUM(MyColumn)) FROM MyTable WHERE 1;
but instead of getting Sum is: 100 I get something like 546573743a20343030.
Is this a bug or a feature? What am I doing wrong?
UPDATE
SELECT CONCAT('Sum is: ',CAST(SUM(MyColumn) AS varchar(20))) FROM MyTable WHERE 1;
Casting to varchar doesn't work: getting SQL syntax error.
回答1:
As FreshPrinceOfSO suggested in the comments below my question, MySQL server doesn't handle casts to varchar.
So even though the query
SELECT CONCAT('Sum is: ',CAST(SUM(MyColumn) AS varchar(20))) FROM MyTable WHERE 1;
results in syntax error, casting to char instead works just fine:
SELECT CONCAT('Sum is: ',CAST(SUM(MyColumn) AS char(20))) FROM MyTable WHERE 1;
来源:https://stackoverflow.com/questions/22023468/weird-behaviour-of-sum-and-concat-in-mysql