Autor | Zpráva | ||
---|---|---|---|
Tori Profil |
#1 · Zasláno: 8. 12. 2013, 16:02:23
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 |
#2 · Zasláno: 9. 12. 2013, 13:16:13
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. |
||
Časová prodleva: 10 let
|
0