Risposte:
CHARINDEX () cerca una sottostringa all'interno di una stringa più grande e restituisce la posizione della corrispondenza o 0 se non viene trovata alcuna corrispondenza
if CHARINDEX('ME',@mainString) > 0
begin
--do something
end
Modifica o dalla risposta di Daniels, se vuoi trovare una parola (e non i sottocomponenti di parole), la tua chiamata CHARINDEX sarebbe simile a:
CHARINDEX(' ME ',' ' + REPLACE(REPLACE(@mainString,',',' '),'.',' ') + ' ')
(Aggiungi altre chiamate REPLACE () ricorsive per qualsiasi altra punteggiatura che può verificarsi
REPLACE
chiamato se stesso; "nidificato" è quando il risultato di una chiamata di funzione viene immediatamente passato a un'altra funzione.
select CHARINDEX('ME' collate Latin1_General_CS_AS,'Home')
e select CHARINDEX('ME' collate Latin1_General_CI_AS,'Home')
. (Nelle regole di confronto, CS
sta per Case Sensitive e sono sicuro che puoi allenarti CI
).
È possibile utilizzare solo caratteri jolly nel predicato (dopo IF, WHERE o ON):
@mainstring LIKE '%' + @substring + '%'
o in questo caso specifico
' ' + @mainstring + ' ' LIKE '% ME[., ]%'
(Metti gli spazi nella stringa tra virgolette se stai cercando l'intera parola o lasciali fuori se ME può far parte di una parola più grande).
N
se la colonna è an nvarchar
, altrimenti si ottengono conversioni per riga)