Odpowiedzi:
CHARINDEX () wyszukuje podciąg w obrębie większego łańcucha i zwraca pozycję dopasowania lub 0, jeśli nie znaleziono dopasowania
if CHARINDEX('ME',@mainString) > 0
begin
--do something
end
Edytuj lub z odpowiedzi Danielsa, jeśli chcesz znaleźć słowo (a nie podskładniki słów), twoje wywołanie CHARINDEX wyglądałoby następująco:
CHARINDEX(' ME ',' ' + REPLACE(REPLACE(@mainString,',',' '),'.',' ') + ' ')
(Dodaj więcej rekurencyjnych wywołań REPLACE () dla każdej innej interpunkcji, która może wystąpić
REPLACE
nazwany sam; „zagnieżdżony” ma miejsce, gdy wynik wywołania funkcji jest natychmiast przekazywany do innej funkcji.
select CHARINDEX('ME' collate Latin1_General_CS_AS,'Home')
i select CHARINDEX('ME' collate Latin1_General_CI_AS,'Home')
. (W zestawieniach CS
oznacza Case Sensitive i jestem pewien, że możesz poćwiczyć CI
).
Możesz po prostu użyć symboli wieloznacznych w predykacie (po JEŻELI, GDZIE lub WŁĄCZONY):
@mainstring LIKE '%' + @substring + '%'
lub w tym konkretnym przypadku
' ' + @mainstring + ' ' LIKE '% ME[., ]%'
(Umieść spacje w cytowanym ciągu, jeśli szukasz całego słowa, lub pomiń je, jeśli ME może być częścią większego słowa).
N
jeśli twoja kolumna jest nvarchar
, w przeciwnym razie uzyskasz konwersje w wierszu)