0
以下所有查詢均返回ID爲1
的行,爲什麼?MySQL:爲什麼在這個查詢中「1 + 1」被當作「1」?
SELECT * FROM `my_table` WHERE `ID` = "1" SELECT * FROM `my_table` WHERE `ID` = "1+1" SELECT * FROM `my_table` WHERE `ID` = "1 WTF"
以下所有查詢均返回ID爲1
的行,爲什麼?MySQL:爲什麼在這個查詢中「1 + 1」被當作「1」?
SELECT * FROM `my_table` WHERE `ID` = "1" SELECT * FROM `my_table` WHERE `ID` = "1+1" SELECT * FROM `my_table` WHERE `ID` = "1 WTF"
當MySQL執行比較它會做一個數據類型轉換時兩個被比較的值的數據類型是不相同的。在這種情況下,ID
是數字,並將其與字符串進行比較。所以MySql會將字符串轉換爲數字。它通過讀取字符串開始處的數字來完成此操作,只要不再理解它爲數字就停止。
在您所提供的號碼的所有三個例子是1
您可以在MySQL文檔中讀到這樣的:"Type Conversion in Expression Evaluation"