wake-up-neo.net

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 verificare se ME di Word è all'interno di @mainString.

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

222
NLV

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 answer, 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

368

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

113
Daniel Quinlan
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 aiuterà.

3
Hardik