Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL:select * from table wobei col IN (null, ) ohne OR möglich ist

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

Beachten Sie jedoch, dass OR Die Abfrage ist viel effizienter, wenn die Spalte indiziert ist:

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

Dies wird ref_or_null verwenden Zugriffspfad auf den Index.

Wenn Sie aus einer Liste von Werten zusammen mit NULLs auswählen müssen , fügen Sie einfach alle Nicht-Null-Werte in die Liste ein und fügen Sie ein einzelnes OR IS NULL hinzu Bedingung:

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

Dies verwendet einen Index auf col auch.