我的表看起來像這樣:WHERE A或B IN(x)的不匹配,但返回的行
| a | ts_9 | ts_11 |
|----|------|-------|
| yx | 0 | |
| xy | 0 | |
出於某種原因,得到返回的行,當我打電話:
SELECT * FROM things WHERE ts_9 IN ("asdewdwedewd") OR ts_11 IN ("asdewdwedewd")
爲什麼會發生?
隨意重新創建與複製粘貼您的分貝:
CREATE TABLE `things` (
`a` char(12) NOT NULL DEFAULT '',
`ts_9` decimal(2,0) NOT NULL,
`ts_11` char(1) NOT NULL DEFAULT '',
PRIMARY KEY (`a`),
UNIQUE KEY `a` (`a`));
INSERT INTO `things` (`a`, `ts_9`, `ts_11`) VALUES ('yx', '0', ''), ('xy', '0', '');
我的猜測是字符串被轉換爲一個整數。 – Uueerdo
@Uueerdo很棒的猜測,謝謝!有沒有任何通用的預防措施來避免這種情況? – Basti
我能想到的唯一的事情就是不要在涉及到相等的表達式中混合使用數字和字符串類型,除非您可以保證字符串正確解析。 – Uueerdo