我有一個簡單的表:意外行爲數由字母
Entity
ID : int
Name : varchar(10)
我被他們的ID查找實體和發現,讓我感到驚訝的結果。假設存在ID = 10的實體。當我運行下面的查詢,我得到如下結果:
SELECT * from Entity WHERE ID = 10 Found Entity 10 (as expected)
SELECT * from Entity WHERE ID = '10' Found Entity 10 (as expected)
SELECT * from Entity WHERE ID = A Syntax error (as expected)
SELECT * from Entity WHERE ID = 'A' Zero records found (as expected)
SELECT * from Entity WHERE ID = 10A Syntax error (as expected)
SELECT * from Entity WHERE ID = '10A' Found Entity 10 (WTF)
最後的查詢似乎忽略了「A」和我好像在10這個剛剛通過評估查詢是不是我所期待。
這是標準行爲嗎?我無法找到任何doco。
你能爲此提供一個參考嗎? –
這只是MySQL嗎?還是應該所有RDBMS都這樣做? – dave
@dave afaik它只是MySQL。如果遇到非數字,其他dbs會爆炸並輸入錯誤。 – Bohemian