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

Was ist der Unterschied zwischen ifnull und coalesce in mysql?

Der Hauptunterschied zwischen den beiden ist, dass IFNULL Die Funktion nimmt zwei Argumente und gibt das erste zurück, wenn es nicht NULL ist oder die zweite, wenn die erste NULL ist .

COALESCE Die Funktion kann zwei oder mehr Parameter annehmen und gibt den ersten Nicht-NULL-Parameter oder NULL zurück wenn alle Parameter null sind, zum Beispiel:

SELECT IFNULL('some value', 'some other value');
-> returns 'some value'

SELECT IFNULL(NULL,'some other value');
-> returns 'some other value'

SELECT COALESCE(NULL, 'some other value');
-> returns 'some other value' - equivalent of the IFNULL function

SELECT COALESCE(NULL, 'some value', 'some other value');
-> returns 'some value'

SELECT COALESCE(NULL, NULL, NULL, NULL, 'first non-null value');
-> returns 'first non-null value'

AKTUALISIERUNG: MSSQL führt eine strengere Typ- und Parameterprüfung durch. Außerdem hat es kein IFNULL Funktion, sondern ISNULL -Funktion, die die Typen der Argumente kennen muss. Deshalb:

SELECT ISNULL(NULL, NULL);
-> results in an error

SELECT ISNULL(NULL, CAST(NULL as VARCHAR));
-> returns NULL

Auch COALESCE Funktion in MSSQL erfordert, dass mindestens ein Parameter ungleich Null ist, daher:

SELECT COALESCE(NULL, NULL, NULL, NULL, NULL);
-> results in an error

SELECT COALESCE(NULL, NULL, NULL, NULL, 'first non-null value');
-> returns 'first non-null value'