sql >> Databasteknik >  >> RDS >> Mysql

MySQL:välj * från tabellen där col IN (null, ) är möjligt utan ELLER

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

Notera dock än OR frågan blir mycket effektivare om kolumnen är indexerad:

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

Detta kommer att använda ref_or_null åtkomstväg på indexet.

Om du behöver välja från en lista med värden tillsammans med NULLs , lägg bara alla värden som inte är null i listan och lägg till en enda OR IS NULL skick:

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

Detta kommer att använda ett index på col likaså.



  1. Frisörsalongens databasprojekt

  2. Text-, ntext- och bilddatatyperna kan inte jämföras eller sorteras, förutom när du använder operatorn IS NULL eller LIKE>

  3. Hur skyddar sprintf() mot SQL-injektion?

  4. ORA-01653:det går inte att utöka tabellen med i tabellutrymmet ORA-06512