19
是它的某種可能性,它可以在Mysql中爲空字符串和NULL值選擇而不使用或?Mysql:select * from table where col IN(null,「」)possible OR
這樣的:
select * from table where col IN (null, "");
不工作,它忽略了空(或者可能以字符串 '空'
感謝, PV Goddijn
是它的某種可能性,它可以在Mysql中爲空字符串和NULL值選擇而不使用或?Mysql:select * from table where col IN(null,「」)possible OR
這樣的:
select * from table where col IN (null, "");
不工作,它忽略了空(或者可能以字符串 '空'
感謝, PV Goddijn
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
爲好。
我把它從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
'@ pvgoddjin':是的,它會的。 – Quassnoi 2010-01-27 17:05:34
如果NULL在IN()內部,或者僅當NULL與IN()或OR時才使用索引? – Henno 2016-02-03 17:03:48