3
滑稽的結果,我有一個表定義爲TINYINT值的列(mail_flag)= 0與MySQL comparsion
當我設置SQL語句:select * from table where mail_flag = "r"
我得到的所有行作爲結果。其實我期待一個空洞的結果。有沒有人有解釋?
滑稽的結果,我有一個表定義爲TINYINT值的列(mail_flag)= 0與MySQL comparsion
當我設置SQL語句:select * from table where mail_flag = "r"
我得到的所有行作爲結果。其實我期待一個空洞的結果。有沒有人有解釋?
如果您將一個數字(本例中爲tinyint
)與一個字符MySQL will attempt to convert the character to a number.進行比較,更糟糕的是,它會在遇到的第一個非數字字符處截斷字符串。在這裏,由於沒有數字字符,因此該字符串將被視爲0
,當然,0
等於0
。
爲了得到一個合理的結果,你應該強制MySQL投數爲字符串,而不是默認的鑄造:
SELECT *
FROM mytable
WHERE CAST(mail_flag AS CHAR(1)) = 'r'