web-dev-qa-db-fra.com

Vérifier si une chaîne contient une sous-chaîne dans SQL Server 2005, à l'aide d'une procédure stockée

J'ai une chaîne, @mainString = 'CATCH ME IF YOU CAN'. Je veux vérifier si le mot ME est à l'intérieur de @mainString.

Comment vérifier si une chaîne a une sous-chaîne spécifique en SQL?

229
NLV

CHARINDEX () recherche une sous-chaîne dans une chaîne plus grande et renvoie la position de la correspondance, ou 0 si aucune correspondance n'est trouvée.

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

Modifiez ou à partir de daniels si vous voulez trouver un mot (et non des sous-composants de mots), votre appel CHARINDEX ressemblera à ceci:

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

(Ajoutez des appels REPLACE () plus récursifs pour toute autre ponctuation pouvant survenir

377

Vous pouvez simplement utiliser des caractères génériques dans le prédicat (après IF, WHERE ou ON):

@mainstring LIKE '%' + @substring + '%'

ou dans ce cas particulier

' ' + @mainstring + ' ' LIKE '% ME[., ]%'

(Mettez les espaces dans la chaîne entre guillemets si vous recherchez le mot entier, ou laissez-les de côté si MOI peut faire partie d'un mot plus grand).

115
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'

cela peut vous aider.

3
Hardik