web-dev-qa-db-fra.com

Vérifier si la chaîne ne contient pas une autre chaîne

Dans T-SQL, comment vérifier si une chaîne ne contient pas une autre chaîne?

J'ai un nvarchar qui pourrait être "Pommes Oranges".

Je voudrais faire une mise à jour où, par exemple, un columm ne contient pas "Pommes".

Comment cela peut-il être fait?

56
Dofs
WHERE NOT (someColumn LIKE '%Apples%')
82
Daniel A. White

Ou bien, vous pouvez utiliser ceci:

WHERE CHARINDEX(N'Apples', someColumn) = 0

Vous ne savez pas lequel fonctionne le mieux? Vous devez le tester! :-)

Marc

UPDATE: la performance semble être à peu près au même niveau que l'autre solution (WHERE someColumn NE COMME PAS '% Apples%') - il ne s'agit donc que d'une question de préférence personnelle.

24
marc_s

Utilisez ceci comme condition WHERE

WHERE CHARINDEX('Apples', column) = 0 
10
dutch

Les réponses que vous avez supposées être du texte statique à comparer. Si vous souhaitez comparer une autre colonne (par exemple, vous joignez deux tables et souhaitez en trouver une où une colonne d'une table fait partie d'une colonne d'une autre table), vous pouvez le faire.

WHERE NOT (someColumn LIKE '%' || someOtherColumn || '%')
7
Greg Dougherty