2016-03-21 7 views
2

Ich schreibe eine gespeicherte Prozedur in SQL, wo ich ein Szenario habe, das alle Datensätze abruft, wenn der Parameter null ist, oder übereinstimmenden Datensatz abrufen, wenn der Parameter nicht null ist. In diesem Fall verwende ich immer ISNULL-Funktion wie folgt aus:Was bedeutet es, dass @param NULL ODER Wert = @param in SQL ist?

table.value = ISNULL(@param,table.value) 

Aber in diesem Fall, wenn der Wert nicht null ist, es funktioniert gut, aber wenn der Wert null ist, dann holen sie alle Datensätze mit Ausnahme derjenigen, in denen table.value ist Null. Also ich suchte und fand eine Lösung here mit sII beantwortet. aber ich verstehe die Aussage nicht @param IS NULL OR value= @param Es funktioniert gut für mich, aber ich kann nicht verstehen? Wie es funktioniert? Vielen Dank im Voraus für die Antwort.

+0

Es ist eine zweiteilige Anweisung mit einem OR ... param IS NULL ist die erste Bedingung also entweder das wahr ist oder die zweite Bedingung Wert = Parameter ist wahr. Was ist das Problem damit? –

+0

@UsamaZafar gibt es kein Problem. Ich möchte wissen, wie es funktioniert? – CodeLover

Antwort

3

Unten ist mein Verständnis über ALL IF NULL Statement.

Fall 1: Wenn der Parameter @param IS NULL ist.

In diesem Fall wird die All if NULL Aussage wie diese wird wird,

NULL IS NULL OR value= @param. 

Hier ist der left Teil der OR Anweisung True, also Datensätze nach diesem Teil holen wird. So wird die Abfrage,

SELECT *FROM TABLE WHERE NULL IS NULL was ist das gleiche wie SELECT *FROM TABLE. So wird es alle Datensätze abrufen.

Fall 2: Wenn die Parameter @param Wert (zB Wert = 1) haben

In diesem Fall wird die All if NULL Anweisung wie folgt wird,

1 IS NULL OR value= 1. 

Hier ist der left Teil der OR Aussage wird False, So Datensätze werden nach dem right Teil abrufen. Also die Abfrage wird,

SELECT *FROM TABLE WHERE value= 1. 

Hoffe, dass Sie jetzt verstehen ..

+0

Ja, ich verstehe.Thanks Kumpel – CodeLover

+0

Sie sind willkommen :) – bmsqldev