SOME | ANY (Transact-SQL)
Data aggiornamento: 17 luglio 2006
Confronta un valore scalare con un set di valori a colonna singola. SOME e ANY sono equivalenti.
Convenzioni della sintassi Transact-SQL
Sintassi
scalar_expression { = | < > | ! = | > | > = | ! > | < | < = | ! < }
{ SOME | ANY } ( subquery )
Argomenti
- scalar_expression
Qualsiasi espressione valida.
- { = | <> | != | > | >= | !> | < | <= | !< }
Qualsiasi operatore di confronto valido.
- SOME | ANY
Specifica che deve essere eseguito un confronto.
- subquery
Subquery che include un set di risultati con una sola colonna. Il tipo di dati della colonna restituita deve corrispondere a quello dell'espressione scalar_expression.
Tipi restituiti
Boolean
Osservazioni
SOME specifica che l'argomento scalar_expression deve essere confrontato in modo univoco almeno con un valore restituito dalla subquery. Per le istruzioni che specificano che scalar_expression deve essere confrontato in modo univoco con ogni valore restituito dalla subquery, vedere ALL (Transact-SQL). Se, ad esempio, la subquery restituisce i valori 2 e 3, scalar_expression = SOME (subquery) restituisce TRUE se il valore di scalar_express è 2. Se la subquery restituisce i valori 2 e 3, scalar_expression = ALL (subquery) restituisce FALSE, in quanto alcuni valori della subquery (il valore 3) non soddisfano i criteri dell'espressione.
Valore restituito
SOME o ANY restituisce TRUE se il confronto specificato è TRUE per almeno una coppia (scalar_expression**,**x), dove x è un valore del set di valori a colonna singola. In caso contrario, restituisce FALSE.
Esempi
Nell'esempio seguente viene creata una stored procedure che determina se tutti i componenti di una colonna SalesOrderID
specificata nel database AdventureWorks
possono essere prodotti nel numero di giorni indicato. Nell'esempio viene utilizzata una subquery per creare un elenco contenente i numeri corrispondenti ai valori di DaysToManufacture
per tutti i componenti della colonna SalesOrderID
specifica e viene quindi verificato se alcuni dei valori restituiti dalla subquery sono maggiori del numero di giorni specificato. Se ogni valore di DaysToManufacture
restituito è minore del numero specificato, la condizione è TRUE e viene stampato il primo messaggio.
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.' ;
Per testare la procedura, eseguirla utilizzando il valore 49080
di SalesOrderID
, a cui sono associati un componente che richiede 2
giorni e due componenti che richiedono 0 giorni. La prima istruzione, di seguito, soddisfa i criteri, mentre la seconda no.
EXECUTE DaysToBuild 49080, 2 ;
Set di risultati:
All items for this order can be manufactured in specified number of days or less.
EXECUTE DaysToBuild 49080, 1 ;
Set di risultati:
Some items for this order cannot be manufactured in specified number of days or less.
Vedere anche
Riferimento
CASE (Transact-SQL)
Funzioni (Transact-SQL)
Operatori (Transact-SQL)
SELECT (Transact-SQL)
WHERE (Transact-SQL)
IN (Transact-SQL)
Altre risorse
Operatori di confronto modificati da ANY, SOME o ALL
Nozioni fondamentali sulle subquery
Tipi di subquery
Guida in linea e informazioni
Cronologia modifiche
Versione | Cronologia |
---|---|
17 luglio 2006 |
|