Autor Zpráva
Tori
Profil
Pěkné odpoledne. Jaký je nejvhodnější způsob, jak v MySQL porovnávat, jestli pole je prázdné a/nebo nulové? Mám něco jako SELECT IF(table1.col IS NULL OR table1.col = "", table2.col, table1.col), ale když je těch polí několik a s dlouhými názvy, tak už se dost ztrácí přehlednost. Co by bylo lepší použít (i z hlediska rychlosti)?

IF(LENGTH(table1.col)<1, table2.col, table1.col)  -- asi bude pomalejší kvůli volání funkce
IFNULL(NULLIF(table1.col, ""), table2.col)  -- tohle?
COALESCE kvůli prázdným řetězcům použít nemůžu.
Kajman
Profil
Pokud jde o rychlost, mohlo být nejrychlejší zamezit výskytu prázdných řetězců (snad jen v mysql to je něco jiného než null). Tedy nachystat trigger before insert, update, co ohlídá daný sloupec + update současných dat. Ale nevěřím, že tam bude rozdíl v rychlosti závratný.

Jinak bych asi použil ten druhý řádek. První nejspíše nebude fungovat, length vrátí null, pokud sloupec bude null.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: