2016-08-03 82 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