J'ai une chaîne, @mainString = 'CATCH ME IF YOU CAN'
. Je veux vérifier si le mot ME
est à l'intérieur @mainString
.
Comment vérifier si une chaîne a une sous-chaîne spécifique dans SQL?
J'ai une chaîne, @mainString = 'CATCH ME IF YOU CAN'
. Je veux vérifier si le mot ME
est à l'intérieur @mainString
.
Comment vérifier si une chaîne a une sous-chaîne spécifique dans SQL?
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
Modifier ou à partir de la réponse Daniels, si vous voulez trouver un mot (et non des sous-composants de mots), votre appel CHARINDEX ressemblerait à:
CHARINDEX(' ME ',' ' + REPLACE(REPLACE(@mainString,',',' '),'.',' ') + ' ')
(Ajouter des appels REPLACE () plus récursifs pour toute autre ponctuation pouvant survenir
REPLACE
appelé lui-même; "imbriqué", c'est quand le résultat d'un appel de fonction est immédiatement passé à une autre fonction.select CHARINDEX('ME' collate Latin1_General_CS_AS,'Home')
etselect CHARINDEX('ME' collate Latin1_General_CI_AS,'Home')
. (Dans les collations,CS
signifie Sensible à la casse et je suis sûr que vous pouvez travaillerCI
).Vous pouvez simplement utiliser des caractères génériques dans le prédicat (après IF, WHERE ou ON):
ou dans ce cas précis
(Mettez les espaces dans la chaîne entre guillemets si vous cherchez le mot entier, ou laissez-les si ME peut faire partie d'un mot plus gros).
la source
N
si votre colonne est unnvarchar
, sinon vous obtenez des conversions par ligne)