2016-08-03 3 views
0

は、私がこの文を持っている:MySQLはNULL /空のマッチを除外しますか?

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

は基本的に私はこれらの3つのフィールドのいずれかに一致するものがない確認したいです。問題は、私は一致していないはずの場所があることです。これにより、MySQLとチェックされているデータの両方で空白になっていれば、一致するとフラグが立てられます。それは正しいと思いますか?もしそうなら、このマッチングプロセスから空の値をどのように除外することができますか?

+0

空のことで、あなたは 'NULL'または空の文字列を意味していますか? 'NULL'値は比較に失敗し、何も返されません。 –

+0

@Gordon 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 
関連する問題