If one of the values is NULL
, then CONCAT()
will return NULL
. And NULL NOT IN (...)
is always NULL
. Also NULL IN (...)
is always NULL
. If you want to use NULL
you should explicitally handle it. In this specific case, CONCAT_WS()
helps, because it never returns NULL
.
SELECT *
FROM _custom_access_call
WHERE CONCAT_WS('', type, name) NOT IN ('string1', 'string2', 'string3');
Also, note that this query cannot use any index.