Aracılığıyla paylaş


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.

Topic link iconTransact-SQL sözdizimi kuralları

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.