SQL Server: Eleganter Weg, um zu überprüfen, ob der Wert "IST NULL" oder "= integer-Wert"
Ich habe eine Tabelle, bestehend aus einigen code-Zellen (für die Indizierung Zwecke), und ein "Wert" der Zelle (wo die Daten, die ich interessiere mich für das Leben), die der folgenden ähnelt:
column: datatype:
code1 int
code2 int
code3 int
code4 int
attributes varchar(max)
Checke ich gegen einige input-codes, die in der gespeicherten Prozedur fügt hinzu, dass diese Tabelle, und die Einschränkung hinzufügen, dass meine EINGABE codes (@code1, @code2, @code3, @code4) können entweder gleiche Werte ODER Sie können null sein, aber sind die gleichen wie die in einigen übereinstimmenden Zeilen in der Tabelle.
Was ist der beste Weg, zu sagen, dass die folgende Aussage:
SET @targetAttributesCell = (SELECT attributes FROM MyTable
WHERE (code1 = @code1)
AND (code2 = @code2)
AND (code3 = @code3)
AND (code4 = @code4)); <-- where code1/@code1 'IS NULL' or = '[some integer]'?
Vielen Dank im Voraus. Bitte lassen Sie mich wissen, wenn ich brauche, um deutlicher zu sein.
- Wenn Sie nicht sicher sind, dass Sie klar ist, geben Sie Beispiel-Daten zusammen mit dem Verhalten/Ergebnisse, die Sie erwarten.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier gehen Sie:
Wenn Code4 null ist, werde es übereinstimmt die ganze Zahl ist. Wenn Code4 entspricht dem integer, werde es übereinstimmt die ganze Zahl ist. Wenn Code4 ist jede andere ganze Zahl, wird es nicht passen.
BEARBEITEN
Tun, Sie müssen sogar diese Prüfung? Gibt es NULL-Werte in deiner Tabelle? Wenn dem so ist, dann ist der NULL-Parameter würde nur übereinstimmen.
WHERE ISNULL(code1, 0) = ISNULL(@code1, 0)
vielen Dank für das Lesen meiner ganze Frage gründlich durch. 🙂 🙂WHERE Code4 Is Null
(ref: stackoverflow.com/questions/16080139/...)In meinem Fall, es funktioniert.
Vor allem, wenn Sie die Behandlung von null als Wert.
ISNULL(cast(@FirstInt als varchar),")<>ISNULL(cast(@SecondInt als varchar),")
Versuchen, diese...
(code1 IS NULL OR code1 = @code1)
?code1 = @code1
wahr ist, dann ist die@code1 IS NOT NULL
überprüfen ist überflüssig.(code1 IS NULL OR @code1 IS NULL OR code1 = @code1)
?(code1 IS NULL AND @code1 IS NULL OR code1 = @code1)
SQL Server: Elegant way to check if value “IS NULL” or “= integer value”
Wie der Körper von der Frage...( @code1 IS NOT NULL and code1 = @code1)
gleichwertig(code1 = @code1)
. Immer, Nullen oder nicht-Nullen.