SOME | ANY (Transact-SQL)SOME | ANY (Transact-SQL)

S’APPLIQUE À : OuiSQL Server OuiAzure SQL Database NonAzure Synapse Analytics (SQL DW) NonParallel Data Warehouse APPLIES TO: YesSQL Server YesAzure SQL Database NoAzure Synapse Analytics (SQL DW) NoParallel Data Warehouse

Compare une valeur scalaire avec un ensemble de valeurs appartenant à une seule colonne.Compares a scalar value with a single-column set of values. SOME et ANY sont équivalents.SOME and ANY are equivalent.

Icône Lien de rubrique Conventions de la syntaxe Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SyntaxeSyntax

  
scalar_expression { = | < > | ! = | > | > = | ! > | < | < = | ! < }   
     { SOME | ANY } ( subquery )   

ArgumentsArguments

scalar_expressionscalar_expression
Toute expression valide.Is any valid expression.

{ = | <> | != | > | >= | !> | < | <= | !< }{ = | <> | != | > | >= | !> | < | <= | !< }
Tout opérateur de comparaison valide.Is any valid comparison operator.

SOME | ANYSOME | ANY
Spécifie qu'il convient d'effectuer une comparaison.Specifies that a comparison should be made.

subquerysubquery
Sous-requête avec un jeu de résultats d'une colonne.Is a subquery that has a result set of one column. Le type de données de la colonne renvoyée doit correspondre à celui de scalar_expression.The data type of the column returned must be the same data type as scalar_expression.

Types des résultatsResult Types

BooléenBoolean

Valeur des résultatsResult Value

SOME ou ANY retourne la valeur TRUE quand la comparaison spécifiée a la valeur TRUE pour une paire (scalar_expression , x) où x est une valeur du jeu de valeurs sur une seule colonne ; dans le cas contraire, la valeur FALSE est retournée.SOME or ANY returns TRUE when the comparison specified is TRUE for any pair (scalar_expression,x) where x is a value in the single-column set; otherwise, returns FALSE.

NotesRemarks

SOME nécessite que scalar_expression corresponde à au moins une valeur retournée par la sous-requête.SOME requires the scalar_expression to compare positively to at least one value returned by the subquery. Pour les instructions qui nécessitent que l’argument scalar_expression corresponde à toutes les valeurs retournées par la sous-requête, consultez ALL (Transact-SQL).For statements that require the scalar_expression to compare positively to every value that is returned by the subquery, see ALL (Transact-SQL). Par exemple, si la sous-requête retourne les valeurs 2 et 3, scalar_expression = SOME (sous-requête) prend la valeur TRUE pour une scalar_expression égale à 2.For instance, if the subquery returns values of 2 and 3, scalar_expression = SOME (subquery) would evaluate as TRUE for a scalar_express of 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.If the subquery returns values of 2 and 3, scalar_expression = ALL (subquery) would evaluate as FALSE, because some of the values of the subquery (the value of 3) wouldn't meet the criteria of the expression.

ExemplesExamples

R.A. Exécution d'un exemple simpleRunning a simple example

Les instructions suivantes créent une table simple et ajoutent les valeurs 1, 2, 3 et 4 à la colonne ID.The following statements create a simple table and add the values of 1, 2, 3, and 4 to the ID column.

CREATE TABLE T1  
(ID int) ;  
GO  
INSERT T1 VALUES (1) ;  
INSERT T1 VALUES (2) ;  
INSERT T1 VALUES (3) ;  
INSERT T1 VALUES (4) ;  

La requête suivante renvoie TRUE car 3 est inférieur à certaines des valeurs de la table.The following query returns TRUE because 3 is less than some of the values in the table.

IF 3 < SOME (SELECT ID FROM T1)  
PRINT 'TRUE'   
ELSE  
PRINT 'FALSE' ;  

La requête suivante retourne FALSE, car 3 n'est pas inférieur à toutes les valeurs de la table.The following query returns FALSE because 3 isn't less than all of the values in the table.

IF 3 < ALL (SELECT ID FROM T1)  
PRINT 'TRUE'   
ELSE  
PRINT 'FALSE' ;  

B.B. Exécution d'un exemple pratiqueRunning a practical example

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 AdventureWorks2012 peuvent être fabriqués dans le délai du nombre de jours spécifié.The following example creates a stored procedure that determines whether all the components of a specified SalesOrderID in the AdventureWorks2012 database can be manufactured in the specified number of days. L'exemple utilise une sous-requête pour créer une liste du nombre de DaysToManufacture pour tous les composants du SalesOrderID spécifié, puis vérifie si parmi les valeurs retournées par la sous-requête certaines sont supérieures au nombre de jours spécifié.The example uses a subquery to create a list of the number of DaysToManufacture value for all the components of the specific SalesOrderID, and then tests whether any of the values that are returned by the subquery are greater than the number of days specified. Si chaque valeur retournée pour DaysToManufacture est inférieure au nombre fourni, la condition a la valeur TRUE et le premier message est imprimé.If every value of DaysToManufacture that is returned is less than the number provided, the condition is TRUE and the first message is printed.

-- Uses AdventureWorks  
  
CREATE PROCEDURE ManyDaysToComplete @OrderID int, @NumberOfDays int  
AS  
IF   
@NumberOfDays < SOME  
   (  
    SELECT DaysToManufacture  
    FROM Sales.SalesOrderDetail  
    JOIN Production.Product   
    ON Sales.SalesOrderDetail.ProductID = Production.Product.ProductID   
    WHERE SalesOrderID = @OrderID  
   )  
PRINT 'At least one item for this order can't be manufactured in specified number of days.'  
ELSE   
PRINT 'All items for this order can be manufactured in the 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.To test the procedure, execute the procedure by using the SalesOrderID``49080, which has one component that requires 2 days and two components that require 0 days. La première instruction remplit les critères,The first statement meets the criteria. Ce n’est pas le cas de la deuxième requête.The second query doesn't.

EXECUTE ManyDaysToComplete 49080, 2 ;  

Voici le jeu de résultats obtenu.Here is the result set.

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

EXECUTE ManyDaysToComplete 49080, 1 ;  

Voici le jeu de résultats obtenu.Here is the result set.

At least one item for this order can't be manufactured in specified number of days.

Voir aussiSee Also

ALL (Transact-SQL) ALL (Transact-SQL)
CASE (Transact-SQL) CASE (Transact-SQL)
Fonctions intégrées (Transact-SQL) Built-in Functions (Transact-SQL)
Opérateurs (Transact-SQL) Operators (Transact-SQL)
SELECT (Transact-SQL) SELECT (Transact-SQL)
WHERE (Transact-SQL) WHERE (Transact-SQL)
IN (Transact-SQL)IN (Transact-SQL)