Condition de recherche (Transact-SQL)

Combinaison d'un ou de plusieurs prédicats à l'aide des opérateurs logiques AND, OR et NOT.

Icône Lien de rubriqueConventions de la syntaxe de Transact-SQL

Syntaxe

< search_condition > ::= 
    { [ NOT ] <predicate> | ( <search_condition> ) } 
    [ { AND | OR } [ NOT ] { <predicate> | ( <search_condition> ) } ] 
[ ,...n ] 
<predicate> ::= 
    { expression { = | < > | ! = | > | > = | ! > | < | < = | ! < } expression 
    | string_expression [ NOT ] LIKE string_expression 
  [ ESCAPE 'escape_character' ] 
    | expression [ NOT ] BETWEEN expression AND expression 
    | expression IS [ NOT ] NULL 
    | CONTAINS 
    ( { column | * } , '< contains_search_condition >' ) 
    | FREETEXT ( { column | * } , 'freetext_string' ) 
    | expression [ NOT ] IN ( subquery | expression [ ,...n ] ) 
    | expression { = | < > | ! = | > | > = | ! > | < | < = | ! < } 
  { ALL | SOME | ANY} ( subquery ) 
    | EXISTS ( subquery )     } 

Arguments

<search_condition>

Pour une instruction SELECT, une expression de requête ou une sous-requête, spécifie les conditions des lignes retournées dans le jeu de résultats. Pour une instruction UPDATE, spécifie les lignes à mettre à jour. Pour une instruction DELETE, spécifie les lignes à supprimer. Le nombre de prédicats inclus dans une condition de recherche d'instruction Transact-SQL est illimité.

NOT

Inverse l'expression booléenne spécifiée par le prédicat. Pour plus d'informations, consultez NOT (Transact-SQL).

AND

Combine deux critères et évalue le résultat à TRUE lorsque les deux critères ont l'un et l'autre la valeur TRUE. Pour plus d'informations, consultez AND (Transact-SQL).

OR

Combine deux critères et évalue le résultat à TRUE lorsque l'un des deux critères comporte la valeur TRUE. Pour plus d'informations, consultez OR (Transact-SQL).

< prédicat >

Expression qui retourne la valeur TRUE, FALSE ou UNKNOWN.

expression

Nom de colonne, constante, fonction, variable, sous-requête scalaire ou n'importe quelle combinaison de noms de colonnes, de constantes et de fonctions reliées par un ou plusieurs opérateurs ou par une sous-requête. L'expression peut également contenir la fonction CASE.

=

Opérateur utilisé pour évaluer l'égalité de deux expressions.

<>

Opérateur utilisé pour évaluer l'inégalité de deux expressions.

!=

Opérateur utilisé pour évaluer l'inégalité de deux expressions.

>

Opérateur utilisé pour évaluer la supériorité d'une expression par rapport à une autre.

>=

Opérateur utilisé pour évaluer la supériorité ou l'égalité d'une expression par rapport à une autre.

!>

Opérateur utilisé pour évaluer la non-supériorité d'une expression par rapport à une autre.

<

Opérateur utilisé pour évaluer l'infériorité d'une expression par rapport à une autre.

<=

Opérateur utilisé pour évaluer l'infériorité ou l'égalité d'une expression par rapport à une autre.

!<

Opérateur utilisé pour évaluer la non-infériorité d'une expression par rapport à une autre.

string_expression

Chaîne de caractères et de caractères génériques.

[ NOT ] LIKE

Indique que la chaîne de caractères suivante sera utilisée avec une recherche générique. Pour plus d'informations, consultez LIKE (Transact-SQL).

ESCAPE 'escape_ character'

Permet de rechercher un caractère générique en tant que chaîne de caractère plutôt qu'en tant que caractère générique. L'argument escape_character est le caractère placé devant le caractère générique pour signaler cette interprétation spécifique.

[ NOT ] BETWEEN

Définit une plage inclusive (ou exclusive) de valeurs. Utilisez AND pour séparer les valeurs de début et de fin. Pour plus d'informations, consultez BETWEEN (Transact-SQL).

IS [NOT] NULL

Définit une recherche des valeurs NULL ou non NULL suivant les mots clé utilisés. Une expression avec un opérateur au niveau du bit ou un opérateur arithmétique retourne la valeur NULL si l'un des opérandes a la valeur NULL.

CONTAINS

Recherche dans des colonnes de données textuelles des concordances plus ou moins précises (approximatives) avec des mots isolés ou des expressions, des répétitions et des concordances pondérées. Cette option ne peut être utilisée qu'avec les instructions SELECT. Pour plus d'informations, consultez CONTAINS (Transact-SQL).

FREETEXT

Fournit une forme de requête simplifiée en langage naturel qui recherche dans une colonne les synonymes plutôt qu'uniquement les termes exacts du prédicat. Cette option ne peut être utilisée qu'avec les instructions SELECT. Pour plus d'informations, consultez FREETEXT (Transact-SQL).

[ NOT ] IN

Définit la recherche d'une expression, suivant que l'expression est incluse ou dans une liste ou exclue de celle-ci. L'expression de recherche peut être une constante ou un nom de colonne, et la liste peut être un ensemble de constantes ou, plus généralement, une sous-requête. Insérez la liste de valeurs entre parenthèses. Pour plus d'informations, consultez IN (Transact-SQL).

subquery

Peut être considérée comme une instruction SELECT restreinte, semblable à <query_expresssion> dans l'instruction SELECT. La clause ORDER BY, la clause COMPUTE et le mot clé INTO ne sont pas autorisés. Pour plus d'informations, consultez SELECT (Transact-SQL).

ALL

Utilisé avec un opérateur de comparaison et une sous-requête. Retourne la valeur TRUE pour <predicate> si toutes les valeurs extraites pour la sous-requête satisfont l'opérateur de comparaison, ou retourne la valeur FALSE dans le cas contraire ou si la sous-requête ne retourne aucune ligne à l'instruction externe. Pour plus d'informations, consultez ALL (Transact-SQL).

{ SOME | ANY }

Utilisé avec un opérateur de comparaison et une sous-requête. Retourne la valeur TRUE pour >predicate< si au moins une valeur extraite pour la sous-requête satisfait l'opérateur de comparaison, ou retourne la valeur FALSE dans le cas contraire ou si la sous-requête ne retourne aucune ligne à l'instruction externe. Dans les autres cas, l'expression est inconnue (UNKNOWN). Pour plus d'informations, consultez SOME | ANY (Transact-SQL).

EXISTS

Utilisé dans une sous-requête pour vérifier l'existence de lignes retournées par la sous-requête. Pour plus d'informations, consultez EXISTS (Transact-SQL).

Notes

L'ordre de priorité des opérateurs logiques est NOT (la plus élevée), puis AND et OR. Les parenthèses peuvent être utilisées pour remplacer cette priorité dans un critère de recherche. L'ordre d'évaluation des opérateurs logiques peut varier en fonction des choix effectués par l'optimiseur de requête. Pour plus d'informations sur le fonctionnement des opérateurs logiques avec des valeurs logiques, consultez AND (Transact-SQL), OR (Transact-SQL), et NOT (Transact-SQL).

Exemples

A. Utilisation de WHERE avec la syntaxe LIKE et ESCAPE

L'exemple suivant recherche les colonnes dans lesquelles la colonne LargePhotoFileName comprend les caractères green_, et utilise l'option ESCAPE car _ est un caractère générique. Sans l'option ESCAPE, la requête recherche toutes les valeurs de description contenant le mot green suivi de n'importe quel caractère autre que le caractère _.

USE AdventureWorks ;
GO
SELECT * 
FROM Production.ProductPhoto
WHERE LargePhotoFileName LIKE '%greena_%' ESCAPE 'a' ;

B. Utilisation des syntaxes WHERE et LIKE avec des données Unicode

Cet exemple utilise la clause WHERE pour extraire l'adresse postale de toutes les sociétés qui se trouve hors des États-Unis (US) et dans une ville dont le nom commence par Mn.

USE AdventureWorks ;
GO
SELECT AddressLine1, AddressLine2, City, PostalCode, CountryRegionCode  
FROM Person.Address AS a
JOIN Person.StateProvince AS s ON a.StateProvinceID = s.StateProvinceID
WHERE CountryRegionCode NOT IN ('US')
AND City LIKE N'Mn%' ;

Voir aussi

Référence

Fonctions d'agrégation (Transact-SQL)
CASE (Transact-SQL)
CONTAINSTABLE (Transact-SQL)
Curseurs (Transact-SQL)
DELETE (Transact-SQL)
Expressions (Transact-SQL)
FREETEXTTABLE (Transact-SQL)
FROM (Transact-SQL)
Opérateurs (Transact-SQL)
UPDATE (Transact-SQL)

Autres ressources

Exécution de requêtes SQL Server à l'aide de la recherche de texte intégral
Opérateurs logiques

Aide et Informations

Assistance sur SQL Server 2005