Antworten:
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')
und select CHARINDEX('ME' collate Latin1_General_CI_AS,'Home')
. (In Kollatierungen CS
steht für Groß- und Kleinschreibung und ich bin sicher, dass Sie trainieren können CI
).
Sie können einfach Platzhalter im Prädikat verwenden (nach IF, WHERE oder ON):
@mainstring LIKE '%' + @substring + '%'
oder in diesem speziellen Fall
' ' + @mainstring + ' ' LIKE '% ME[., ]%'
(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.)
N
wenn Ihre Spalte eine ist nvarchar
, sonst erhalten Sie zeilenweise Konvertierungen.)