Aracılığıyla paylaş


BAZI | ANY (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiMicrosoft Fabric'te SQL veritabanı

Skaler değeri tek sütunlu bir değer kümesiyle karşılaştırır. SOME ve ANY eşdeğerdir.

Transact-SQL söz dizimi kuralları

Syntax

scalar_expression { = | <> | != | > | >= | !> | < | <= | !< }   
     { SOME | ANY } ( subquery )   

Arguments

scalar_expression
Geçerli bir ifadedir.

{ = | <> | != | > | >= | !> | < | <= | !< }
Geçerli bir karşılaştırma işlecidir.

BAZI | HERHANGİ

Karşılaştırma yapılması gerektiğini belirtir.

subquery

Bir sütundan oluşan bir sonuç kümesine sahip bir alt sorgudur. Döndürülen sütunun veri türü scalar_expression ile aynı veri türü olmalıdır.

Sonuç türleri

Boolean

Sonuç değeri

BELIRTILEN karşılaştırma herhangi bir çift için DOĞRU olduğunda (scalar_expression, x), x tek sütunlu kümedeki bir değer olduğunda, SOME veya ANY, TRUE döndürür; aksi takdirde YANLIŞ döndürür.

Remarks

SOME, scalar_expression pozitif olarak alt sorgu tarafından döndürülen en az bir değerle karşılaştırmasını gerektirir. alt sorgu tarafından döndürülen her değerle pozitif olarak karşılaştırmak için scalar_expression gerektiren deyimler için bkz. ALL (Transact-SQL). Örneğin, alt sorgu 2 ve 3 değerlerini döndürürse, scalar_expression = BAZI (alt sorgu) 2 scalar_express için DOĞRU olarak değerlendirilir. Alt sorgu 2 ve 3 değerlerini döndürürse, alt sorgunun bazı değerleri (3 değeri) ifadenin ölçütlerini karşılamayacağından scalar_expression = TÜMÜ (alt sorgu) YANLIŞ olarak değerlendirilir.

Examples

A. Basit bir örnek çalıştırma

Aşağıdaki deyimler basit bir tablo oluşturur ve sütuna 1 , 2, 3ve 4 değerlerini IDekler.

CREATE TABLE T1  
(ID INT) ;  
GO  
INSERT T1 VALUES (1) ;  
INSERT T1 VALUES (2) ;  
INSERT T1 VALUES (3) ;  
INSERT T1 VALUES (4) ;  

Aşağıdaki sorgu, tablodaki bazı değerlerden daha az olduğundan döndürür TRUE3 .

IF 3 < SOME (SELECT ID FROM T1)  
PRINT 'TRUE'   
ELSE  
PRINT 'FALSE' ;  

Aşağıdaki sorgu, tablodaki tüm değerlerden küçük olmadığından döndürür FALSE3 .

IF 3 < ALL (SELECT ID FROM T1)  
PRINT 'TRUE'   
ELSE  
PRINT 'FALSE' ;  

B. Pratik bir örnek çalıştırma

Aşağıdaki örnek, veritabanında belirtilen SalesOrderIDAdventureWorks2025 bir öğesinin tüm bileşenlerinin belirtilen gün sayısı içinde üretilip üretilemeyeceğini belirleyen bir saklı yordam oluşturur. Örnek, belirli DaysToManufacturebir öğesinin tüm bileşenleri için değer sayısının SalesOrderID listesini oluşturmak için bir alt sorgu kullanır ve ardından alt sorgu tarafından döndürülen değerlerden herhangi birinin belirtilen gün sayısından büyük olup olmadığını test eder. Döndürülen her değer DaysToManufacture sağlanan sayıdan küçükse koşul DOĞRU olur ve ilk ileti yazdırılır.

-- Uses AdventureWorks

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 can''t 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.' ;

Yordamı test etmek için, gün gerektiren bir bileşene ve 0 gün gerektiren SalesOrderID``49080 iki bileşene sahip olan komutunu kullanarak 2yordamı yürütür. İlk deyim ölçütleri karşılar. İkinci sorgu bunu yapmaz.

EXECUTE ManyDaysToComplete 49080, 2 ;  

Sonuç kümesi aşağıdadır.

All items for this order can be manufactured in the specified number of days or less.

EXECUTE ManyDaysToComplete 49080, 1 ;  

Sonuç kümesi aşağıdadır.

At least one item for this order can't be manufactured in specified number of days.

Ayrıca bakınız