it-swarm.com.de

Was ist das PostgreSQL-Äquivalent für ISNULL ()

In MS SQL-Server kann ich:

SELECT ISNULL(Field,'Empty') from Table

Aber in PostgreSQL bekomme ich einen Syntaxfehler. Wie emuliere ich die ISNULL() -Funktionalität?

236
Byron Whitlock
SELECT CASE WHEN field IS NULL THEN 'Empty' ELSE field END AS field_alias

Oder mehr idiomatisch:

SELECT coalesce(field, 'Empty') AS field_alias
425
Kyle Butt

Verwenden Sie stattdessen COALESCE():

SELECT COALESCE(Field,'Empty') from Table;

Es funktioniert ähnlich wie ISNULL, bietet jedoch mehr Funktionen. Coalesce gibt den ersten Wert ungleich Null in der Liste zurück. Somit:

SELECT COALESCE(null, null, 5); 

gibt 5 zurück, während

SELECT COALESCE(null, 2, 5);

gibt 2 zurück

Coalesce wird eine große Anzahl von Argumenten annehmen. Es gibt kein dokumentiertes Maximum. Ich habe es mit 100 Argumenten getestet und es ist gelungen. Dies dürfte für die allermeisten Situationen ausreichend sein.

72
Jim Clouse

Wie emuliere ich die ISNULL () -Funktionalität?

SELECT (Field IS NULL) FROM ...
23
Artur

Versuchen:

SELECT COALESCE(NULLIF(field, ''), another_field) FROM table_name
15
user2718914