如果我有一個帶有字符串列的表,並嘗試從匹配0
的列中進行選擇,則返回所有行。爲什麼MySQL會返回所有行,而不僅僅是字符串爲0的行?MySQL選擇0匹配所有字符串
SELECT * FROM MyTable WHERE MyStringColumn = 0;
看看這個SQLFiddle。我希望看到沒有行返回,但都是。爲什麼會發生?
如果我有一個帶有字符串列的表,並嘗試從匹配0
的列中進行選擇,則返回所有行。爲什麼MySQL會返回所有行,而不僅僅是字符串爲0的行?MySQL選擇0匹配所有字符串
SELECT * FROM MyTable WHERE MyStringColumn = 0;
看看這個SQLFiddle。我希望看到沒有行返回,但都是。爲什麼會發生?
比較命令
WHERE info = 0
info
投射爲一個整數。除非它以一串數字開始,否則其整數值爲零。所以,除了'123abc'之外的所有字符串都會匹配。
如果我明確投了'details'列到它返回一個錯誤的整數(不能將「東西」轉換爲整數)。什麼解釋它可以將它轉換成WHERE子句,但不能明確使用'convert(int,details)'? – ApplePie
只需使用 WHERE MyStringColumn =「0」
http://sqlfiddle.com/#!2/a2581/10534 –