Ich habe eine Schnur @mainString = 'CATCH ME IF YOU CAN'
. Ich möchte überprüfen, ob das Wort ME
drin ist @mainString
.
Wie überprüfe ich, ob eine Zeichenfolge in SQL eine bestimmte Teilzeichenfolge enthält?
Ich habe eine Schnur @mainString = 'CATCH ME IF YOU CAN'
. Ich möchte überprüfen, ob das Wort ME
drin ist @mainString
.
Wie überprüfe ich, ob eine Zeichenfolge in SQL eine bestimmte Teilzeichenfolge enthält?
CHARINDEX () sucht nach einer Teilzeichenfolge in einer größeren Zeichenfolge und gibt die Position der Übereinstimmung zurück oder 0, wenn keine Übereinstimmung gefunden wird
if CHARINDEX('ME',@mainString) > 0
begin
--do something
end
Bearbeiten oder von Daniels Antwort: Wenn Sie ein Wort (und keine Unterkomponenten von Wörtern) suchen möchten, sieht Ihr CHARINDEX-Aufruf folgendermaßen aus:
CHARINDEX(' ME ',' ' + REPLACE(REPLACE(@mainString,',',' '),'.',' ') + ' ')
(Fügen Sie rekursivere REPLACE () - Aufrufe für andere möglicherweise auftretende Interpunktionen hinzu
REPLACE
selbst aufgerufen würde ; "verschachtelt" ist, wenn das Ergebnis eines Funktionsaufrufs sofort an eine andere Funktion übergeben wird.select CHARINDEX('ME' collate Latin1_General_CS_AS,'Home')
undselect CHARINDEX('ME' collate Latin1_General_CI_AS,'Home')
. (In KollatierungenCS
steht für Groß- und Kleinschreibung und ich bin sicher, dass Sie trainieren könnenCI
).Sie können einfach Platzhalter im Prädikat verwenden (nach IF, WHERE oder ON):
oder in diesem speziellen Fall
(Setzen Sie die Leerzeichen in die Zeichenfolge in Anführungszeichen, wenn Sie nach dem gesamten Wort suchen, oder lassen Sie sie weg, wenn ME Teil eines größeren Wortes sein kann.)
quelle
N
wenn Ihre Spalte eine istnvarchar
, sonst erhalten Sie zeilenweise Konvertierungen.)