60 votes

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

En T-SQL, comment vérifier qu'une chaîne ne contient pas une autre chaîne ?

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

Je voudrais faire une mise à jour où, par exemple, une colonne n'a pas contiennent des "Pommes".

Comment cela peut-il être fait ?

90voto

Daniel A. White Points 91889
WHERE NOT (someColumn LIKE '%Apples%')

25voto

marc_s Points 321990

Ou alternativement, vous pouvez utiliser ceci :

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

Je ne sais pas lequel des deux est le plus performant - il faut le tester ! :-)

Marc

MISE À JOUR : les performances semblent être à peu près équivalentes à celles de l'autre solution (WHERE someColumn NOT LIKE '%Apples%') - il ne s'agit donc que d'une question de préférence personnelle.

10voto

dutch Points 182

Utilisez ceci comme votre condition de WHERE

WHERE CHARINDEX('Apples', column) = 0

8voto

Greg Dougherty Points 474

Les réponses que vous avez obtenues supposent un texte statique auquel vous pouvez vous comparer. Si vous voulez comparer avec une autre colonne (disons que vous joignez deux tables et que vous voulez trouver celles où une colonne d'une table fait partie d'une colonne d'une autre table), vous pouvez faire ceci

WHERE NOT (someColumn LIKE '%' || someOtherColumn || '%')

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X