2010-01-27 73 views

回答

28
SELECT * 
FROM mytable 
WHERE COALESCE(col, '') = '' 

注意匹配它,但是,比OR查詢將更有效,如果列索引:

SELECT * 
FROM mytable 
WHERE col = '' OR col IS NULL 

這將在索引上使用ref_or_null訪問路徑。

如果您需要從價值觀與NULLs沿列表中進行選擇,只是把所有非空值到列表中,並添加一個OR IS NULL條件:

SELECT * 
FROM mytable 
WHERE col IN ('val1', 'val2', 'val3') OR col IS NULL 

這將使用一個索引上col爲好。

+0

我把它從consciseness中刪除了,但實際上我的查詢是: select * from table where col IN(「」,NULL,「a」,「b」,「c」,「more more options」) ; 這仍然是正確使用索引? (col in(list)or IS NULL) – pvgoddijn 2010-01-27 16:51:24

+0

'@ pvgoddjin':是的,它會的。 – Quassnoi 2010-01-27 17:05:34

+0

如果NULL在IN()內部,或者僅當NULL與IN()或OR時才使用索引? – Henno 2016-02-03 17:03:48

相關問題