2013-06-30 33 views
0

如果我有一個帶有字符串列的表,並嘗試從匹配0的列中進行選擇,則返回所有行。爲什麼MySQL會返回所有行,而不僅僅是字符串爲0的行?MySQL選擇0匹配所有字符串

SELECT * FROM MyTable WHERE MyStringColumn = 0; 

看看這個SQLFiddle。我希望看到沒有行返回,但都是。爲什麼會發生?

+0

http://sqlfiddle.com/#!2/a2581/10534 –

回答

3

比較命令

WHERE info = 0 

info投射爲一個整數。除非它以一串數字開始,否則其整數值爲零。所以,除了'123abc'之外的所有字符串都會匹配。

+0

如果我明確投了'details'列到它返回一個錯誤的整數(不能將「東西」轉換爲整數)。什麼解釋它可以將它轉換成WHERE子句,但不能明確使用'convert(int,details)'? – ApplePie

0

只需使用 WHERE MyStringColumn =「0」