2016-08-03 87 views
0

我有这样的说法:MySQL排除NULL /空匹配?

SELECT id FROM laptops 
WHERE (hostname = :hostname) 
OR (asset_tag = :asset_tag) 
OR (serial = :serial) LIMIT 1 

基本上我想检查没有任何这三个字段的比赛。问题是,我得到的是不应该存在的匹配项,这导致我认为如果其中一个字段在MySQL和正在检查的数据中都是空的,则会标记为匹配项。这听起来正确吗?如果是这样,我如何从这个匹配过程中排除空值?

+0

通过空的,你的意思'NULL'或空字符串? “NULL”值会导致比较失败,因此不会返回任何结果。 –

+0

@戈登Linoff我正在比较空字符串。 – daninthemix

回答

0

OK,非常简单的答案,因为事实证明:

SELECT id FROM laptops 
WHERE (hostname = :hostname && hostname != '') 
OR (asset_tag = :asset_tag && asset_tag !='') 
OR (serial = :serial && serial != '') LIMIT 1 
0

@Gordon:我认为他正在寻找

SELECT id FROM laptops 
WHERE (hostname != :hostname) 
AND (asset_tag != :asset_tag) 
AND (serial != :serial) LIMIT 1