SOME | ANY (Transact-SQL)
更新: 2006 年 7 月 17 日
比較純量值與單一資料行集的值。SOME 和 ANY 是相等的。
語法
scalar_expression { = | < > | ! = | > | > = | ! > | < | < = | ! < }
{ SOME | ANY } ( subquery )
引數
- scalar_expression
這是任何有效的運算式。
- { = | <> | != | > | >= | !> | < | <= | !< }
這是任何有效的比較運算子。
- SOME | ANY
指定應該進行比較。
- subquery
這是有單一資料行結果集的子查詢。傳回的資料行資料類型必須與 scalar_expression 的資料類型相同。
結果類型
Boolean
備註
SOME 需要正面比較 scalar_expression 與至少一個子查詢傳回值。如需有關需要正面比較 scalar_expression 和每個子查詢傳回值的陳述式,請參閱<ALL (Transact-SQL)>。例如,如果子查詢傳回 2 和 3 兩個值,2 的 scalar_express 在執行 scalar_expression = SOME (子查詢) 之後,將會評估為 TRUE。如果子查詢傳回 2 和 3 兩個值,scalar_expression = ALL (子查詢) 會評估為 FALSE,因為部分子查詢的值 (即值 3) 不符合運算式的準則。
結果值
當任何一組 (scalar_expression**,**x) 的指定比較是 TRUE 時 (其中 x 是單一資料行集中的值),SOME 或 ANY 會傳回 TRUE;否則,便傳回 FALSE。
範例
下列範例會建立預存程序,以判斷 AdventureWorks
資料庫中所指定 SalesOrderID
的所有組件,是否都可以在指定的天數內製造出來。這個範例會使用子查詢,針對特定 SalesOrderID
的所有組件建立一份 DaysToManufacture
值數目的清單,然後測試是否有任何一個子查詢傳回值大於所指定的天數。如果傳回的每個 DaysToManufacture
值都小於指定的數目,則條件為 TRUE,並且會列印出第一個訊息。
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.' ;
若要測試這個程序,請使用 SalesOrderID``49080
來執行程序,其具有一個需要 2
天時間來製造的組件,以及兩個需要 0 天來製造的組件。下列的第一個陳述式符合此準則,第二個查詢則不符合。
EXECUTE DaysToBuild 49080, 2 ;
以下為結果集:
這個順序的所有項目都可以依照指定天數或以更少天數製造。
EXECUTE DaysToBuild 49080, 1 ;
以下為結果集:
這個順序的某些項目無法依照指定天數或以更少天數製造。
請參閱
參考
CASE (Transact-SQL)
函數 (Transact-SQL)
運算子 (Transact-SQL)
SELECT (Transact-SQL)
WHERE (Transact-SQL)
IN (Transact-SQL)
其他資源
ANY、SOME 或 ALL 修改的比較運算子
子查詢基本原則
子查詢類型
說明及資訊
變更歷程記錄
版本 | 歷程記錄 |
---|---|
2006 年 7 月 17 日 |
|