web-dev-qa-db-fra.com

Comment savoir si une variable VARCHAR contient une sous-chaîne?

Je pensais que c'était CONTAINS, mais ça ne marche pas pour moi.

Je cherche à faire ceci:

IF CONTAINS(@stringVar, 'thisstring')
   ...

Je dois exécuter un select ou un autre, selon que cette variable contient ou non une chaîne et je ne vois pas comment le faire fonctionner. Tous les exemples que je vois utilisent des colonnes dans le contient.

Merci d'avance.

56
Yatrix

La méthode SQL standard consiste à utiliser comme suit:

where @stringVar like '%thisstring%'

C'est dans une instruction de requête. Vous pouvez également le faire dans TSQL:

if @stringVar like '%thisstring%'
74
Gordon Linoff

Au lieu de LIKE (qui fonctionne comme le suggèrent d’autres commentateurs), vous pouvez également utiliser CHARINDEX:

declare @full varchar(100) = 'abcdefg'
declare @find varchar(100) = 'cde'
if (charindex(@find, @full) > 0)
    print 'exists'
27
CD Jorgensen
    IF CHARINDEX('TextToSearch',@TextWhereISearch, 0) > 0 => TEXT EXISTS

    IF PATINDEX('TextToSearch', @TextWhereISearch) > 0 => TEXT EXISTS

    Additionally we can also use LIKE but I usually don't use LIKE.
7
Sanjeev Singh

CONTAINS est destiné à un champ indexé de texte intégral - sinon, utilisez LIKE

7
podiluska