Partage via


ALL (Transact-SQL)

S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance

Compare une valeur scalaire avec un ensemble de valeurs appartenant à une seule colonne.

Conventions de la syntaxe Transact-SQL

Syntaxe

scalar_expression { = | <> | != | > | >= | !> | < | <= | !< } ALL ( subquery )  

Arguments

scalar_expression
Toute expression valide.

{ = | <> | != | > | >= | !> | < | <= | !< }
Opérateur de comparaison.

subquery
Sous-requête dont le jeu de résultats est une colonne. Le type de données de la colonne retournée doit être le même que celui de scalar_expression.

Instruction SELECT limitée, dans laquelle la clause ORDER BY et le mot clé INTO ne sont pas autorisés.

Types des résultats

Booléen

Valeur de résultat

Retourne la valeur TRUE quand la comparaison spécifiée a la valeur TRUE pour toutes les paires (scalar_expression, x), quand x est une valeur du jeu de la colonne. Sinon, retourne FALSE.

Remarques

ALL requiert que l’argument scalar_expression corresponde à toutes les valeurs retournées par la sous-requête. Par exemple, si la sous-requête retourne les valeurs 2 et 3, scalar_expression<= TOUS (sous-requête) a la valeur TRUE pour une scalar_expression égale à 2. Si la sous-requête retourne les valeurs 2 et 3, l’instruction scalar_expression = ALL (sous-requête) donne FALSE, étant donné que certaines des valeurs de la sous-requête (à savoir 3) ne répondent pas aux critères de l’expression.

Pour les instructions qui demandent que l’argument scalar_expression corresponde à seulement une des valeurs retournées par la sous-requête, consultez SOME | ANY (Transact-SQL).

Pour comparer l’égalité de deux expressions et garantir un résultat true ou false, consultez IS [NOT] DISTINCT FROM (Transact-SQL).

Cet article fait référence à l’instruction ALL lorsqu’elle est utilisée avec une sous-requête. ALL peut aussi être utilisé avec UNION et SELECT.

Exemples

L’exemple suivant crée une procédure stockée qui détermine si tous les composants d’un SalesOrderID spécifié dans la base de données AdventureWorks2022 peuvent être fabriqués dans le délai du nombre de jours spécifié. L’exemple utilise une sous-requête pour créer une liste du nombre de valeurs DaysToManufacture pour tous les composants du SalesOrderID spécifié, puis vérifie que toutes les valeurs DaysToManufacture sont inférieures ou égales au nombre de jours spécifié.

-- Uses AdventureWorks

CREATE PROCEDURE DaysToBuild @OrderID INT, @NumberOfDays INT  
AS  
IF   
@NumberOfDays >= ALL  
   (  
    SELECT DaysToManufacture  
    FROM Sales.SalesOrderDetail  
    JOIN Production.Product   
    ON Sales.SalesOrderDetail.ProductID = Production.Product.ProductID   
    WHERE SalesOrderID = @OrderID  
   )  
PRINT 'All items for this order can be manufactured in specified number of days or less.'  
ELSE   
PRINT 'Some items for this order can''t be manufactured in specified number of days or less.' ;  

Pour tester la procédure, exécutez-la en utilisant le SalesOrderID 49080 dont l'un des composants demande 2 jours de fabrication, tandis que les 2 autres en demandent 0. La première instruction ci-dessous remplit les critères, Ce n’est pas le cas de la deuxième requête.

EXECUTE DaysToBuild 49080, 2 ;  

Voici le jeu de résultats.

All items for this order can be manufactured in specified number of days or less.

EXECUTE DaysToBuild 49080, 1 ;  

Voici le jeu de résultats.

Some items for this order can't be manufactured in specified number of days or less.

Voir aussi