Verificare se una stringa contiene una sottostringa in SQL Server 2005, utilizzando una stored procedure

Ho una stringa, @mainString = 'CATCH ME IF YOU CAN' . Voglio controllare se la parola ME trova all’interno di @mainString .

Come posso verificare se una stringa ha una sottostringa specifica in SQL?

CHARINDEX () cerca una sottostringa all’interno di una stringa più grande e restituisce la posizione della corrispondenza, oppure 0 se non viene trovata alcuna corrispondenza

 if CHARINDEX('ME',@mainString) > 0 begin --do something end 

Modifica o da daniels rispondi, se vuoi trovare una parola (e non sottocomponenti di parole), la tua chiamata CHARINDEX sarà simile a:

 CHARINDEX(' ME ',' ' + REPLACE(REPLACE(@mainString,',',' '),'.',' ') + ' ') 

(Aggiungere più chiamate REPLACE () ricorsive per qualsiasi altra punteggiatura che potrebbe verificarsi

È ansible 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 quotata se stai cercando l’intera parola, o lasciali fuori se ME può far parte di una parola più grande).

 DECLARE @str VARCHAR(255) SET @str = 'this is @n $tring' IF (@str LIKE '%[^a-zA-Z0-9]%') PRINT 'have some ''special'' characters' ELSE PRINT 'have not ''special'' characters' 

questo ti può aiutare.

Non si dice il sapore di SQL (cioè quale database) ma in Oracle è ansible utilizzare instr () e in SQL Server è ansible utilizzare SUBSTRING ()