2013-02-18 45 views
4

我正在將一個站點從CF8移動到CF10,並且遇到了我並不期待的事情。我的MySQL查詢有一個簡單的串連與公司名稱公司ID組合成這樣:CF10將mysql字符串連接爲二進制數據

SELECT CONCAT(co_coid, ' - ',co_company) AS IDCONAME 

在CF8,這個返回一個字符串,我可以像在cfselect我的顯示值。

998 - Company A 
999 - Company B 

然而,在CF10當我傾倒它示出了作爲二進制數據的查詢,我必須對輸出使用的toString()。

我知道在返回之前沒有的加密數據時需要使用toString(),但我不確定它爲什麼要在簡單字符串連接上進行此操作。

[更新] 這可以通過連接字符串或其他服務器範圍的設置進行更改嗎?我知道我可以在輸出中使用toString(),或者在查詢中使用CAST(),但是服務器範圍內的東西是理想的。 MySQL服務器是同一臺服務器,所以在那裏沒有版本更改。

+1

哪些數據類型的列? [mySQL文檔](http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_concat)表示這是某些數據類型的預期行爲。 (編輯)AFAIK,除了使用CAST作爲JW提到的之外,您不能改變這一點。由於CF8和CF10使用不同的驅動程序,因此也可能存在驅動程序差異。 – Leigh 2013-02-18 16:49:34

+1

此更改在CF9中引入。許多MySQL函數都會返回二進制,除非您將值作爲字符串CAST。 – CfSimplicity 2013-02-21 08:19:42

回答

5

轉換成數字符串,

SELECT CONCAT(CAST(co_coid AS CHAR(15)), ' - ',co_company) AS IDCONAME 
+0

謝謝 - 我知道有辦法解決這個問題,但我對你的「爲什麼」更好奇,以及是否有全局修復(DSN上的連接字符串)可以在服務器級別解決這個問題。 – Steve 2013-02-18 16:39:37

+0

您的原始查詢不夠完美。當你遇到更高版本的時候,ColdFusion對這種類型的事物有着更少的容忍。 – 2013-02-18 16:44:48

+0

謝謝 - 它可能是CF 5或6剩餘的老人。我將不得不花費一些時間來確保解決任何其他問題。 – Steve 2013-02-18 16:50:14

相關問題