2014-02-13 59 views
2

MySQL會自動將字符串轉換爲\將數值轉換爲數值嗎?
該轉換是如何工作的?MySQL自動將一個字符串轉換/轉換爲一個數字?

  • '1234'= 1234?
  • '1abc'= 1?
  • 'text'= 1?

鑑於units.id是bigint類型,該查詢將如何解釋?

SELECT table.* 
FROM table 
WHERE id='text' 
+0

[是](http://stackoverflow.com/questions/14411380/what-is-the-meaning-of-select/ 14411466#14411466) –

回答

4

您對前三個問題的回答是:是,是,否。

當字符串'text'轉換爲數字時,它將成爲值0

描述類型轉換的文檔是here

您所查詢:

SELECT table.* 
FROM table 
WHERE id='text'; 

規則是由文檔的摘錄捕獲:

在其他情況下,參數相比,浮點(實)數。

換句話說,這實際上等效於:

WHERE id = 0.0 
3

MySQL的默認治療1和「1 '但是您可以通過將MySQL行爲設置爲嚴格模式來改變這一點。

set @@GLOBAL.sql_mode = "STRICT_ALL_TABLES"; 
set @@SESSION.sql_mode = "STRICT_ALL_TABLES"; 

,或者你可以設置你的my.cnf文件這些變量是永久性的sql_mode = ''。這樣,如果使用了錯誤的類型,MySQL將會拋出一個錯誤。 閱讀http://dev.mysql.com/doc/refman/5.0/en/server-sql-mode.html瞭解更多詳情

+0

謝謝@ sam-d時,「any」太寬。 – yossi