を返します。が、私のテーブルはこのようになります行
| a | ts_9 | ts_11 |
|----|------|-------|
| yx | 0 | |
| xy | 0 | |
そして、私が呼び出したときに行が返されます何らかの理由:
SELECT * FROM things WHERE ts_9 IN ("asdewdwedewd") OR ts_11 IN ("asdewdwedewd")
なぜそれが起こるのですか?
コピーペーストを使用してDBにそれを再作成してお気軽に:
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