2013-12-08 64 views
0

我有這樣的查詢,但它沒有選擇任何東西,但它應該。所以查詢MySql,CONCAT和NOT IN,字符串值

SELECT * 
FROM _custom_access_call 
WHERE CONCAT(type, name) NOT IN ('string1', 'string2', 'string3') 

我手動添加到表條目與null和'1sfgsg'值,但它沒有被選中。爲什麼?我需要選擇concat值不在數組中的所有條目。幫助處理它。

回答

3

如果其中一個值是NULL,那麼CONCAT()將返回NULL。而NULL NOT IN (...)總是NULLNULL IN (...)總是NULL。如果你想使用NULL你應該明確地處理它。在這種情況下,CONCAT_WS()有幫助,因爲它永遠不會返回NULL

SELECT * 
FROM _custom_access_call 
WHERE CONCAT_WS('', type, name) NOT IN ('string1', 'string2', 'string3'); 

此外,請注意,此查詢不能使用任何索引。