2011-12-05 2 views
-1

Comment puis-je tester si un contenu d'un champ se trouve dans ma table? Par exemple le nom "Anne". Je voudrais écrire une condition qui dit « si ce nom n'est pas dans ma table », puis ...Requête SQL - test de l'absence de nom de personne

Merci

+0

Quel RDBMS utilisez-vous? –

+0

Où cette condition est-elle placée? Dans une requête ou à l'intérieur d'un déclencheur, mémoriser une procédure, une fonction ...? – danihp

Répondre

3
IF NOT EXISTS (SELECT 1 FROM MyTable WHERE [Name] = 'Anne') 
BEGIN 
    .... 
END 

NOT EXISTS est préférable à COUNT(*) = 0. La dernière forme nécessite parfois un index approprié pour bien fonctionner (c'est-à-dire qu'elle n'effectue pas une analyse de table complète, en fonction des index disponibles).

0

Cela dépend si vous essayez de le faire comme une procédure ou une simple requête/mise à jour SQL. Mitch a donné une bonne solution pour le premier. Si c'est ce dernier, ce qui suit est une clause WHERE:

SELECT ... FROM MyTable 
WHERE NOT NameColumn = 'Anne' 
AND ... 

Vous pouvez également vérifier partials en remplaçant = avec LIKE comme tel:

WHERE NOT NameColumn LIKE 'Anne%' 

ou

WHERE NOT NameColumn LIKE '%Anne%' 

Mais l'ours dans l'esprit que LIKE a des considérations de performance en fonction de la taille de votre table, et d'autres facteurs.