Ich muss die Mitarbeiter von Department10 auswählen, wo der Name nicht die Zeichenfolge "LA" enthält.SQL Server: Wählen Sie, wo String nicht bestimmten Wert enthält
Select *
From EMP
Where Cod_Dept = 10
Ich muss die Mitarbeiter von Department10 auswählen, wo der Name nicht die Zeichenfolge "LA" enthält.SQL Server: Wählen Sie, wo String nicht bestimmten Wert enthält
Select *
From EMP
Where Cod_Dept = 10
Select *
From EMP
Where Cod_Dept = 10
And Name Not Like '%LA%'
Hier ist eine weitere Option CHARINDEX()
:
SELECT *
FROM EMP
WHERE Cod_Dept = 10
AND CHARINDEX('LA' , Name , 0) = 0;
Falls Sie haben Null
Wert und Sie wollen es zurück zu:
SELECT *
FROM EMP
WHERE Cod_Dept = 10
AND (CHARINDEX('LA' , Name , 0) = 0) OR (CHARINDEX('LA' , Name , 0) Is Null);
Demo.
Scheint eine endlose Debatte charindex vs wie sein. Ich bevorzuge charindex für Wildcard-Suchen aus zwei Gründen 1) einfacher, eine Variable zu übergeben, ohne eine Zeichenfolge mit% und 2) wichtiger ... Leistung per concate. http://cc.davelozinski.com/sql/like-vs-substring-vs-leftright-vs-charingex trotzdem +1 –
'LIKE' ist sargable, wenn kein führender Wildcard so leicht CHARINDEX in diesem Fall schlagen kann. Vermutlich etwas, was in diesem Link nicht durch einen kurzen Blick auf die Ergebnisse getestet wurde. Mit 'CHARINDEX' müssen Sie sich keine Gedanken über austretende Zeichen wie'% 'machen. Die Kardinalitätsschätzung kann zwischen den beiden unterschiedlich sein. –
Warum '<1' anstatt' = 0'? –
Arbeitete perfekt. Vielen Dank! –