Ermitteln, ob Werte null sind, wenn true, dann false, sonst true

8

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.

    
DForck42 24.05.2011, 20:04
quelle

8 Antworten

5

Ich denke, ich könnte mit dieser Lösung gehen, es sei denn, jemand findet eine bessere Version, inspiriert von @ Alireza:

%Vor%     
DForck42 24.05.2011, 21:06
quelle
11

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 ...

konvertieren müssen %Vor%

Hier ist die Konvertierung, keine Notwendigkeit, die Varchar-Spalten

zu konvertieren %Vor%     
SQLMenace 24.05.2011 20:17
quelle
2

Was ist mit diesem?

%Vor%     
Alireza 24.05.2011 20:09
quelle
2

Sie könnten die Logik invertieren.

%Vor%     
Anthony Faull 24.05.2011 20:17
quelle
2

Bitte verwenden Sie IIF() (muss SQL Server 2012 oder höher sein) Ich empfehle wirklich:

%Vor%     
Xin 21.06.2016 04:52
quelle
1

Erstellen Sie eine HasValue-Funktion, die eine sql_variant übernimmt und ein Bit zurückgibt. Dann verwenden Sie bitweise AND in Ihrer SELECT -Klausel.

%Vor%     
Anthony Faull 24.05.2011 21:07
quelle
0

Oder das:

%Vor%     
RC_Cleland 24.05.2011 20:15
quelle
0

Viel einfacher - verwenden Sie einfach die Funktion COALESCE , die den Wert in der ersten Nicht-Null-Spalte zurückgibt.

%Vor%     
RocketCity 16.03.2016 16:15
quelle