Condition de recherche (Transact-SQL)
S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) SQL analytics endpoint in Microsoft Fabric Warehouse in Microsoft Fabric
Combinaison d’un ou plusieurs prédicats qui utilisent les opérateurs logiques AND
, OR
et NOT
.
Conventions de la syntaxe Transact-SQL
Syntaxe
Syntaxe pour SQL Server, Azure SQL Database et Azure SQL Managed Instance.
<search_condition> ::=
MATCH (<graph_search_pattern>) | <search_condition_without_match> | <search_condition> AND <search_condition>
<search_condition_without_match> ::=
{ [ NOT ] <predicate> | ( <search_condition_without_match> ) }
[ { AND | OR } [ NOT ] { <predicate> | ( <search_condition_without_match> ) } ]
[ ...n ]
<predicate> ::=
{ expression { = | <> | != | > | >= | !> | < | <= | !< } expression
| string_expression [ NOT ] LIKE string_expression
[ ESCAPE 'escape_character' ]
| expression [ NOT ] BETWEEN expression AND expression
| expression IS [ NOT ] NULL
| expression IS [ NOT ] DISTINCT FROM
| CONTAINS
( { column | * } , '<contains_search_condition>' )
| FREETEXT ( { column | * } , 'freetext_string' )
| expression [ NOT ] IN ( subquery | expression [ , ...n ] )
| expression { = | < > | != | > | >= | ! > | < | <= | ! < }
{ ALL | SOME | ANY } ( subquery )
| EXISTS ( subquery ) }
<graph_search_pattern> ::=
{ <node_alias> {
{ <-( <edge_alias> )- }
| { -( <edge_alias> )-> }
<node_alias>
}
}
<node_alias> ::=
node_table_name | node_table_alias
<edge_alias> ::=
edge_table_name | edge_table_alias
Syntaxe pour Azure Synapse Analytics et Parallel Data Warehouse.
< search_condition > ::=
{ [ NOT ] <predicate> | ( <search_condition> ) }
[ { AND | OR } [ NOT ] { <predicate> | ( <search_condition> ) } ]
[ ...n ]
<predicate> ::=
{ expression { = | <> | != | > | >= | < | <= } expression
| string_expression [ NOT ] LIKE string_expression
| expression [ NOT ] BETWEEN expression AND expression
| expression IS [ NOT ] NULL
| expression [ NOT ] IN (subquery | expression [ , ...n ] )
| expression [ NOT ] EXISTS (subquery)
}
Arguments
<search_condition>
Spécifie les conditions des lignes retournées dans le jeu de résultats pour une instruction, une expression de requête ou une SELECT
sous-requête. Pour une UPDATE
instruction, spécifie les lignes à mettre à jour. Pour une DELETE
instruction, spécifie les lignes à supprimer. Il n’existe aucune limite au nombre de prédicats qui peuvent être inclus dans une condition de recherche d’instruction Transact-SQL.
<graph_search_pattern>
Spécifie le modèle de correspondance de graphe. Pour plus d’informations sur les arguments de cette clause, consultez MATCH
NOT
Inverse l'expression booléenne spécifiée par le prédicat. Pour plus d’informations, consultez NOT.
AND
Combine deux conditions et prend la TRUE
valeur lorsque les deux conditions sont TRUE
. Pour plus d’informations, consultez AND.
OR
Combine deux conditions et prend la TRUE
valeur lorsque l’une ou l’autre condition est TRUE
. Pour plus d’informations, consultez OR.
<predicate>
Expression qui retourne TRUE
, FALSE
ou UNKNOWN
. Pour plus d’informations, consultez Predicates.
expression
Spécifie un nom de colonne, une constante, une fonction, une variable, une sous-requête scalaire ou toute combinaison de noms de colonnes, de constantes et de fonctions connectées par un opérateur ou un opérateur ou une sous-requête. L’expression peut également contenir l’expression CASE
.
Les variables et constantes chaîne non Unicode utilisent la page de codes qui correspond au classement par défaut de la base de données. L’utilisation exclusive de données caractères non Unicode et la référence aux types de données caractères non Unicode char, varchar et text peuvent entraîner des conversions de page de codes. SQL Server convertit les constantes et variables de chaîne non Unicode dans la page de codes qui correspond au classement de la colonne référencée ou spécifiée à l’aide COLLATE
, si cette page de codes est différente de la page de codes qui correspond au classement par défaut de la base de données. Tous les caractères introuvables dans la nouvelle page de codes sont traduits en un caractère similaire si un mappage le mieux adapté peut être trouvé, ou sont convertis en caractère de remplacement par défaut de ?
.
Lorsque vous utilisez plusieurs pages de codes, les constantes de caractères peuvent être précédées de la lettre N
majuscule et les variables Unicode peuvent être utilisées pour éviter les conversions de pages de codes.
Opérateur =
Opérateur utilisé pour tester l’égalité entre deux expressions.
Opérateur <>
Opérateur utilisé pour tester la condition de deux expressions qui ne sont pas égales les unes aux autres.
Opérateur !=
Opérateur utilisé pour tester la condition de deux expressions qui ne sont pas égales les unes aux autres.
Opérateur >
Opérateur utilisé pour tester la condition d’une expression supérieure à l’autre.
Opérateur >=
Opérateur utilisé pour tester la condition d’une expression supérieure ou égale à l’autre expression.
Opérateur !>
Opérateur utilisé pour tester la condition d’une expression qui n’est pas supérieure à l’autre expression.
Opérateur <
Opérateur utilisé pour tester la condition d’une expression inférieure à l’autre.
Opérateur <=
Opérateur utilisé pour tester la condition d’une expression inférieure ou égale à l’autre expression.
Opérateur !<
Opérateur utilisé pour tester la condition d’une expression qui n’est pas inférieure à l’autre expression.
string_expression
Chaîne de caractères et caractères génériques.
[ NOT ] COMME
Indique que la chaîne de caractères suivante sera utilisée avec une syntaxe de correspondance au modèle. Pour plus d’informations, consultez LIKE.
ESCAPE 'escape_ caractère'
Permet la recherche d'un caractère générique dans une chaîne de caractères et non en tant que caractère générique. escape_character est le caractère placé devant le caractère générique pour indiquer cette utilisation spéciale.
[ NOT ] ENTRE
Définit une plage inclusive (ou exclusive) de valeurs. Permet AND
de séparer les valeurs de début et de fin. Pour plus d’informations, consultez BETWEEN.
IS [ NOT ] NULL
Spécifie une recherche de valeurs Null ou des valeurs qui ne sont pas null, en fonction des mots clés utilisés. Une expression avec un opérateur arithmétique ou au niveau du bit est évaluée NULL
si l’un des opérandes est NULL
.
IS [NOT] DISTINCT FROM
Compare l’égalité de deux expressions et garantit un résultat vrai ou faux, même si un ou les deux opérandes sont NULL
. Pour plus d’informations, consultez IS [NOT] DISTINCT FROM (Transact-SQL).
CONTAINS
Recherche dans des colonnes de caractères les concordances plus ou moins précises (approximatives) avec des mots isolés ou des expressions, la proximité des mots, ainsi que les concordances pondérées. Cette option ne peut être utilisée qu’avec SELECT
des instructions. Pour plus d’informations, consultez CONTAINS.
FREETEXT
Fournit une forme simple de requête en langage naturel qui recherche dans des colonnes de caractères les synonymes et non les termes exacts du prédicat. Cette option ne peut être utilisée qu’avec SELECT
des instructions. Pour plus d’informations, consultez FREETEXT.
[ NOT ] IN
Définit la recherche d'une expression, selon que cette dernière est incluse ou non dans une liste. L'expression de recherche peut être une constante ou un nom de colonne ; par ailleurs, la liste peut être un ensemble de constantes ou, plus généralement, une sous-requête. Mettez la liste des valeurs entre parenthèses. Pour plus d’informations, consultez IN.
subquery
Peut être considéré comme une instruction restreinte SELECT
et est similaire à <query_expression>
celui de l’instruction SELECT
. La ORDER BY
clause et le INTO
mot clé ne sont pas autorisés. Pour plus d’informations, consultez SELECT.
ALL
Utilisé avec un opérateur de comparaison et une sous-requête. Retourne une valeur TRUE
lorsque <predicate>
toutes les valeurs récupérées pour la sous-requête répondent à l’opération de comparaison, ou FALSE
si toutes les valeurs ne répondent pas à la comparaison ou lorsque la sous-requête ne retourne aucune ligne à l’instruction externe. Pour plus d’informations, consultez ALL.
{ SOME | ANY }
Utilisé avec un opérateur de comparaison et une sous-requête. Retourne une <predicate>
valeur TRUE
quand une valeur récupérée pour la sous-requête satisfait à l’opération de comparaison, ou FALSE
lorsqu’aucune valeur de la sous-requête ne satisfait la comparaison ou lorsque la sous-requête ne retourne aucune ligne à l’instruction externe. Sinon, l’expression est UNKNOWN
. Pour plus d’informations, consultez SOME | ANY.
EXISTS
Utilisé avec une sous-requête, vérifie l’existence de lignes retournées par la sous-requête. Pour plus d’informations, consultez EXISTS.
Notes
L’ordre de priorité des opérateurs logiques est NOT
(la plus élevée), puis AND
, puis 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 sur les valeurs logiques, consultez AND, OR et NOT.
Exemples
Les exemples de code Transact-SQL de cet article sont fondés sur l’échantillon de base de données AdventureWorks2022
ou AdventureWorksDW2022
fourni, que vous pouvez télécharger à partir de la page d’accueil Échantillons et projets communautaires Microsoft SQL Server.
A. Utiliser WHERE avec la syntaxe LIKE et ESCAPE
L’exemple suivant recherche les lignes dans lesquelles la colonne LargePhotoFileName
contient les caractères green_
. Il utilise l’option ESCAPE
, car _
est un caractère générique. Si vous ne spécifiez pas l’option ESCAPE
, la requête recherche des valeurs de description qui contiennent le mot green
suivi d’un caractère unique autre que le _
caractère.
USE AdventureWorks2022;
GO
SELECT *
FROM Production.ProductPhoto
WHERE LargePhotoFileName LIKE '%greena_%' ESCAPE 'a';
B. Utiliser la syntaxe WHERE et LIKE avec des données Unicode
Cet exemple utilise la clause WHERE
pour récupérer l'adresse postale de toutes les sociétés qui se trouvent hors des États-Unis (US
) et dans une ville dont le nom commence par Pa
.
USE AdventureWorks2022;
GO
SELECT AddressLine1,
AddressLine2,
City,
PostalCode,
CountryRegionCode
FROM Person.Address AS a
INNER JOIN Person.StateProvince AS s
ON a.StateProvinceID = s.StateProvinceID
WHERE CountryRegionCode NOT IN ('US')
AND City LIKE N'Pa%';
Exemples : Azure Synapse Analytics et Analytics Platform System (PDW)
C. Utiliser WHERE avec LIKE
L’exemple suivant recherche les lignes dans lesquelles la colonne LastName
contient les caractères and
.
-- Uses AdventureWorks
SELECT EmployeeKey,
LastName
FROM DimEmployee
WHERE LastName LIKE '%and%';
D. Utiliser la syntaxe WHERE et LIKE avec des données Unicode
L’exemple suivant utilise la clause WHERE
pour effectuer une recherche de données Unicode dans la colonne LastName
.
-- Uses AdventureWorks
SELECT EmployeeKey,
LastName
FROM DimEmployee
WHERE LastName LIKE N'%and%';