BAZı | ANY (Transact-SQL)
Tek sütunlu skaler bir değerle karşılaştırır küme değerler.ANY ve SOME eşdeğerdir.
scalar_expression { = | < > | ! = | > | > = | ! > | < | < = | ! < }
{ SOME | ANY } ( subquery )
Bağımsız değişkenler
scalar_expression
Herhangi bir geçerli mi ifade.{ = | <> | != | > | >= | !> | < | <= | !< }
Herhangi bir geçerli karşılaştırma işleç belirtilir.BAZI | HERHANGİ
Bir karşılaştırma yapılması gerektiğini belirtir.subquery
Alt sorgu sonucu olan iş küme bir sütun.Döndürülen sütun veri türünü, aynı veri türünde olmalıdır scalar_expression.
Sonuç türleri
Boolean
Sonuç değeri
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.
Remarks
SOME gerektirir scalar_expression alt sorgu tarafından döndürülen en az bir değere kısıtlayacak karşılaştırmak için . Gerektiren bir ifade için scalar_expression alt sorgu tarafından döndürülen her değer için kısıtlayacak karşılaştırmak için , bkz: Tüm (Transact-SQL). Örneğin, alt sorgunun 2 ve 3 değerlerini verir... scalar_expression = BAZı (alt sorgu) için DOğRU olarak değerlendirildiği bir scalar_express 2. Alt sorgu, 2 ve 3, # sayı scalar_expression = Bazı alt sorgunun (3 değer) değerlerini deyimin ölçütlerine değil çünkü ALL (sorgu) YANLıŞ olarak değerlendirme.
Örnekler
C.Basit örneği
Aşağıdaki ifadeler, basit bir tablo oluşturmak ve değerlerin 1, 2, 3 ve 4 KIMLIĞI sütun ekleyin.
CREATE TABLE T1
(ID int) ;
GO
INSERT T1 VALUES (1) ;
INSERT T1 VALUES (2) ;
INSERT T1 VALUES (3) ;
INSERT T1 VALUES (4) ;
3, Bazı değerler'den küçük olduğu için aşağıdaki sorgu DOğRU verir tablo.
IF 3 < SOME (SELECT ID FROM T1)
PRINT 'TRUE'
ELSE
PRINT 'FALSE' ;
3 Tüm tablosundaki değerler'den küçük olduğu için aşağıdaki sorgu YANLıŞ verir.
IF 3 < ALL (SELECT ID FROM T1)
PRINT 'TRUE'
ELSE
PRINT 'FALSE' ;
b.Pratik örneği
Aşağıdaki örnek, belirleyen bir saklı yordam oluşturur olup olmadığını, belirtilen tüm bileşenleri SalesOrderID içinde AdventureWorks Belirtilen gün sayısı olarak üretilen veritabanı. Örnek bir alt sorgu sayısını gösteren bir liste oluşturmak için kullanır. DaysToManufacture özel tüm bileşenler için bir değer SalesOrderIDve sonra da herhangi bir alt sorgu tarafından gün sayısından daha büyük belirtilen döndürülen değerleri olmadığını sınar. Varsa, her değer DaysToManufacture verilen sayıdan daha az, koşul DOğRU ise ve ilk iletiyi yazdırılan döndürülür.
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.' ;
To test the procedure, execute the procedure by using the SalesOrderID49080 which has one component that requires 2 days and two components that require 0 days.Ilk deyim aşağıdaki ölçütleri karşılar.Ikinci sorguyu bu desteği vermez.
EXECUTE ManyDaysToComplete 49080, 2 ;
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 ;
Here is the result set.
At least one item for this order cannot be manufactured in specified number of days.