这是我正在使用的命令:
SELECT * FROM pos WHERE word = 'accelerator' OR id = 3;
返回:
'3', 'accelerator\r', '1', NULL, NULL, NULL, NULL, NULL, NULL, NULL
但是当我使用时:
SELECT * FROM pos WHERE word = 'accelerator';
我得到NULL
作为回复。
这是我的表结构
答案 0 :(得分:2)
'加速器'不同于加速器\ r'。因此,您似乎已插入数据而不剥离它们。验证使用:
SELECT * FROM pos WHERE word = 'accelerator\r'
它应该返回行
答案 1 :(得分:0)
'accelerator\r' !== 'accelerator'
您可能正在考虑使用LIKE
所以:
SELECT * FROM pos WHERE word LIKE '%accelerator%';
会为您返回正确的结果。
答案 2 :(得分:0)
在'accelerator\r'
中注意字符串末尾的\r
。
这应该有效:
SELECT * FROM pos WHERE word LIKE 'accelerator%'
答案 3 :(得分:0)
让我们来看看你的where
条款:
WHERE word = 'accelerator' OR id = 3;
如果两个操作数中至少有一个为真,则为真。对于给定记录,条件为真,因此至少有一个操作数适用于它。让我们来看看你的其他where子句:
WHERE word = 'accelerator';
这个更严格,不会产生给定的记录。使用第二个where
子句,您看到没有'accelerator'
行作为word
的值,但是,您使用第一个where
子句找到了一条记录'acclerator\r'
为word
,与'accelerator'
不同,但id
为3
,因此,根据您的第一个where
条款,记录满足您的条件,因为OR
的至少一个操作数是真的。