簡體   English   中英

MySQL自動將字符串轉換為where子句中的整數?

[英]MySQL automatic string to integer casting in where clause?

我對MySQL並不陌生,但是今天巧合的是,我的代碼中發生了一種奇怪的情況,這使我感到驚訝。 有人可以解釋為什么這給我相同的結果嗎?

SELECT * FROM `products` WHERE id = 12

SELECT * FROM `products` WHERE id = '12ABC'

在這兩種情況下,選擇相同的記錄都會得到相同的結果。 我希望第二個人不會給我任何回報? 我的ID字段是int(11)無符號的,並且auto_increment標志處於打開狀態。

從MySQL文檔:

當運算符與不同類型的操作數一起使用時,會發生類型轉換以使操作數兼容

文獻資料

因此,基本上, '12ABC''12ABC'12

MySQL必須進行轉換才能在2種不同類型之間進行比較。 它嘗試將字符串設置為int並從頭開始從字符串中獲取數字。

例如你有

'ABC12'

字符串轉換為int的結果將為0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM