Ich habe eine Spalte, die entweder NULL
oder leeren Speicherplatz (d. H. ''
) Werte haben kann. Ich möchte diese beiden Werte durch einen gültigen Wert wie 'UNKNOWN'
ersetzen. Die verschiedenen Lösungen, die ich gefunden habe, schlagen vor, den Wert innerhalb der Tabelle selbst zu ändern. Dies ist jedoch in diesem Fall keine Option, da die Datenbank für eine Drittanbieter-Anwendung gedacht ist, die sehr schlecht entwickelt und/oder gepatcht wurde (in Wirklichkeit hätte mein Rottweiler vielleicht eine bessere Arbeit geleistet). Ich bin besorgt, dass das Ändern der zugrunde liegenden Daten dazu führen könnte, dass die Anwendung in ein rauchendes Loch schmilzt.Ersetzen von NULL und leere Zeichenfolge innerhalb Select-Anweisung
I Variationen der folgenden Befehle versucht haben:
COALESCE(Address.COUNTRY, 'United States') -- Won't replace empty string as it is not NULL
REPLACE(Address.COUNTRY, '', 'United States') -- Doesn't replace empty string
ISNULL(Address.COUNTRY, 'United States') -- Works for NULL but not empty string
Ich weiß, dass ich die CASE
Anweisung verwenden könnte, aber am der Hoffnung es eine viel elegantere/effiziente Lösung.
Sie müssen mir vertrauen, wenn ich sage, dass ich nach einer Lösung für mein spezifisches Problem gesucht habe und keine Antwort gefunden habe. Wenn ich etwas übersehen habe, zeige mir doch freundlich den erleuchteten Weg.
Dies scheint es getan zu haben. Bier ist bei mir. Allerdings bin ich überrascht, dass es funktioniert, dass mein Verständnis ist, dass die COALESCE-Funktion wird den ersten Nicht-Null-Wert greifen. In der Anweisung würde ich erwarten, dass es leeren Platz im Gegensatz zu der Textzeichenfolge zurückgibt ??? Aber unter dem Strich, danke für die Lösung. – mbadtk
Es gibt zwei Funktionen in dieser Anweisung, eine 'NULLIF', die leere Zeichenfolge in null konvertiert und dann' coalesce', die auf null –
@rs .: Anmerkung: 'nullif' konvertiert keine leere Zeichenfolge in null, Es wird zurückgegeben null, wenn zwei Argumente gleich sind;). –