WIE und NULL in der WHERE-Klausel in SQL
Ich habe eine Prozedur speichern, die ich geplant haben zu verwenden, für die Suche und erhalten Sie alle Werte.
Szenario:
Wenn der parameter übergeben wird NULL
sollte es wieder werden alle Werte der Tabelle und wenn der übergebene parameter ist nicht NULL
sollte es wieder der Werte, die entsprechend der Bedingung, die ist in WIE.
//Abfrage:
ALTER procedure [dbo].[usp_GetAllCustomerDetails]
(
@Keyword nvarchar(20) = null
)
As
Begin
Select CustomerId,CustomerName,CustomerTypeName,CustomerCode,CategoryName,CustomerMobile,CustomerEmail,CustomerAddress,CustomerCity,CustomerState,Pincode
from tblCustomerMaster CM
inner join dbo.tblCustomerTypeMaster CTM on CTM.CustomerTypeId = CM.CustomerType
inner join dbo.tblCategoryMaster CCM on CCM.CategoryId= CM.CustomerCategory
where CustomerName like '%'+@Keyword+'%'
In die oben stehende Abfrage gibt es keine Werte, wenn ich ausführen, da die NULL
wird davon ausgegangen, wie string
durch SQL
, also was soll ich schreiben, in die where
- Klausel, um die gewünschte Ausgabe erhalten?
Mögliche Duplikate stackoverflow.com/questions/3924400/...
InformationsquelleAutor iamCR | 2013-09-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie Zustand, wie dieser in Sie
where
KlauselSie können oder möglicherweise nicht ausgeführt, in performance-Probleme mit der Abfrage. Es sind einige Techniken um dies zu vermeiden, aber ich glaube, diese Frage ist mehr über wo generic syntax
InformationsquelleAutor Roman Pekar
Ich möchte nur darauf hinweisen, einen anderen Weg, dieses problem zu lösen. Das Problem ist, dass der default-Wert für
@KeyWord
istNULL
. Wenn Sie die Standardeinstellung ändern, um''
, dann verschwindet das problem:Alle nicht-NULL-Kunde name wäre dann like '%%'.
InformationsquelleAutor Gordon Linoff
Müssen Sie nur hinzufügen
SET @Keyword = coalesce(@Keyword,'')
um Ihre Vorgehensweise so :where CustomerName like '%%'
- und das ist nicht das gleiche wie Ebene alle auswählen aus der Tabelle.Dies wird nur ausschließen
NULL
Werte, richtig ? oder gibt es da weitere Unterschiede ?InformationsquelleAutor Ashish Gaur