Ich habe derzeit eine Select-Anweisung, die mehrere Spalten überprüft, um festzustellen, ob sie Daten enthalten. Wenn einer von ihnen null ist, möchte ich ein Bit auf false setzen. Wenn keiner von ihnen null ist, möchte ich ein Bit auf True setzen. Hier ist, was ich derzeit habe:
%Vor%Nun, dieser Code funktioniert, aber es ist ein bisschen lang, ich habe mich gefragt, ob jemand von einem besseren Weg wusste, dies zu tun. Bitte beachten Sie, dass mehrere Datentypen geprüft werden.
weitere Details: Dieser Code befindet sich in einer Ansicht, die in einer Anwendung zur Verarbeitung von Änderungsaufträgen betrachtet wird. Bevor ein Änderungsauftrag bearbeitet werden kann, muss er einige Datenqualitätsprüfungen erfüllen. Diese Ansicht zeigt an, ob eines der erforderlichen Daten null ist.
Addiere sie einfach, da NULL + "etwas" immer NULL ist ...
%Vor%von einem Beitrag , den ich vor mehr als 3 Jahren erstellt habe ...
Beachten Sie, dass wenn Sie Zeichen haben, die keine Zahlen sind, die Sie in varchar
...
Hier ist die Konvertierung, keine Notwendigkeit, die Varchar-Spalten
zu konvertieren %Vor% Erstellen Sie eine HasValue-Funktion, die eine sql_variant übernimmt und ein Bit zurückgibt. Dann verwenden Sie bitweise AND in Ihrer SELECT
-Klausel.
Viel einfacher - verwenden Sie einfach die Funktion COALESCE
, die den Wert in der ersten Nicht-Null-Spalte zurückgibt.
Tags und Links sql-server sql-server-2008 tsql