In MS SQL-Server kann ich Folgendes tun:
SELECT ISNULL(Field,'Empty') from Table
Aber in PostgreSQL bekomme ich einen Syntaxfehler. Wie emuliere ich die ISNULL()
Funktionalität?
sql-server
postgresql
null
Byron Whitlock
quelle
quelle
ISNULL
nimmt zwei Argumente und gibt zurück, das zweite ist das erstenull
, andernfalls das erste.Antworten:
Oder idiomatischer:
quelle
coalesce
. (PS Sie können das auch in MS SQL Server tun.)coalesce
um einen SQL-Standard handelt, bei demisnull
es sich um eine MS-spezifische Funktion handelt, die im Wesentlichencoalesce
nur aus zwei Parametern besteht.Verwenden Sie
COALESCE()
stattdessen:Es funktioniert ähnlich
ISNULL
, bietet jedoch mehr Funktionalität. Coalesce gibt den ersten Wert ungleich Null in der Liste zurück. So:gibt 5 zurück, während
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 sollte für die überwiegende Mehrheit der Situationen ausreichend sein.
quelle
quelle
ISNULL
Ihre Kommentatoren beziehen,field IS NULL
gibt aber einen booleschen Wert an, währendISNULL
in SQL Server Folgendes funktioniertCOALESCE
: Es wird einer der Nichtwerte zurückgegebenNULL
. Diese Antwort ist schrecklich falsch. Siehe Dokumentation :ISNULL
.Versuchen:
quelle
Erstellen Sie die folgende Funktion
Und es wird funktionieren.
Sie können verschiedene Versionen mit verschiedenen Parametertypen erstellen.
quelle