当我定位其他列(相同数据类型)时,已知的工作查询失败。此查询有效:
Select * from assets WHERE type = '' AND os LIKE '%7%' AND status <> 'Discarded'
但是此查询无效(返回空集):
Select * from assets WHERE model = '' AND os LIKE '%7%' AND status <> 'Discarded'
唯一的区别是列type
更改为model
。两列均为varchar
,并且有满足两个查询条件的记录。我试图在字段名称周围加上``,没有帮助。
答案 0 :(得分:1)
根据注释:表达式AND status <> 'Discarded'
不允许包含NULL
值。
在SQL中,NULL <> 'Discarded'
为假,就像NULL = 'Discarded'
也为假。要检查是否为空,您需要使用IS NULL
。
我认为您的查询应表示为:
SELECT *
FROM assets
WHERE
model = ''
AND os LIKE '%7%'
AND (status IS NULL OR status <> 'Discarded')
注意:值得一提的是,存储空字符串通常不是一个好主意。使用NULL
作为默认值通常更简单。