SOME | ANY (Transact-SQL)
Mis à jour : 17 juillet 2006
Compare une valeur scalaire avec l'ensemble de valeurs d'une colonne. SOME et ANY sont équivalents.
Conventions de la syntaxe de Transact-SQL
Syntaxe
scalar_expression { = | < > | ! = | > | > = | ! > | < | < = | ! < }
{ SOME | ANY } ( subquery )
Arguments
- scalar_expression
Toute expression valide.
- { = | <> | != | > | >= | !> | < | <= | !< }
Tout opérateur de comparaison valide.
- SOME | ANY
Spécifie qu'il convient d'effectuer une comparaison.
- subquery
Sous-requête dont le jeu de résultats est une colonne. Le type de données de la colonne renvoyée doit correspondre à celui de scalar_expression.
Notes
SOME requiert que l'argument scalar_expression corresponde à au moins une valeur retournée par la sous-requête. Pour les instructions qui demandent que l'argument scalar_expression corresponde à toutes les valeurs retournées par la sous-requête, consultez ALL (Transact-SQL). Par exemple, si la sous-requête retourne les valeurs 2 et 3, l'instruction scalar_expression = SOME (subquery) donne TRUE comme résultat pour un argument scalar_express égal à 2. Si la sous-requête retourne les valeurs 2 et 3, l'instruction scalar_expression = ALL (subquery) donne FALSE comme résultat étant donné que certaines des valeurs de la sous-requête (à savoir 3) ne répondent pas aux critères de l'expression.
Types de résultats
Boolean
Valeur des résultats
SOME et ANY renvoient la valeur TRUE lorsque la comparaison spécifiée est vraie (TRUE) pour toute paire (scalar_expression**,**x), où x est une valeur du jeu de valeurs de la colonne. Sinon, SOME et ANY renvoient la valeur FALSE.
Exemples
L'exemple suivant crée une procédure stockée qui détermine si tous les composants d'un SalesOrderID
spécifique de la base de données AdventureWorks
peuvent être fabriqués dans le nombre de jours spécifié. 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é. 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é.
USE AdventureWorks ;
GO
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 cannot 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. La première instruction ci-dessous remplit les critères, mais pas la deuxième.
EXECUTE DaysToBuild 49080, 2 ;
Voici l'ensemble des résultats.
All items for this order can be manufactured in specified number of days or less.
EXECUTE DaysToBuild 49080, 1 ;
Voici l'ensemble des résultats.
Some items for this order cannot be manufactured in specified number of days or less.
Voir aussi
Référence
CASE (Transact-SQL)
Fonctions (Transact-SQL)
Opérateurs (Transact-SQL)
SELECT (Transact-SQL)
WHERE (Transact-SQL)
IN (Transact-SQL)
Autres ressources
Opérateurs de comparaison modifiés par ANY, SOME ou ALL
Principes de base des sous-requêtes
Types de sous-requête
Aide et Informations
Assistance sur SQL Server 2005
Historique des modifications
Version | Historique |
---|---|
17 juillet 2006 |
|