2014-02-25 131 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;