Mam ciąg, @mainString = 'CATCH ME IF YOU CAN'
. Chcę sprawdzić, czy słowo ME
jest w środku @mainString
.
Jak sprawdzić, czy ciąg znaków ma określony podciąg w SQL?
Mam ciąg, @mainString = 'CATCH ME IF YOU CAN'
. Chcę sprawdzić, czy słowo ME
jest w środku @mainString
.
Jak sprawdzić, czy ciąg znaków ma określony podciąg w SQL?
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')
iselect CHARINDEX('ME' collate Latin1_General_CI_AS,'Home')
. (W zestawieniachCS
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):
lub w tym konkretnym przypadku
(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).
źródło
N
jeśli twoja kolumna jestnvarchar
, w przeciwnym razie uzyskasz konwersje w wierszu)