Udostępnij za pomocą


NIEKTÓRE | ANY (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBaza danych SQL w usłudze Microsoft Fabric

Porównuje wartość skalarną z pojedynczym zestawem wartości. NIEKTÓRE i DOWOLNE są równoważne.

Transact-SQL konwencje składni

Syntax

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

Arguments

scalar_expression
Jest dowolnym prawidłowym wyrażeniem.

{ = | <> | != | > | >= | !> | < | <= | !< }
Jest dowolnym prawidłowym operatorem porównania.

NIEKTÓRE | JAKIKOLWIEK

Określa, że należy dokonać porównania.

subquery

Jest podzapytaniem zawierającym zestaw wyników jednej kolumny. Zwracany typ danych kolumny musi być tym samym typem danych co scalar_expression.

Typy wyników

Boolean

Wartość wynikowa

FUNKCJA SOME lub ANY zwraca wartość TRUE , gdy określone porównanie ma wartość TRUE dla dowolnej pary (scalar_expression, x), gdzie x jest wartością w zestawie jednokolumny; w przeciwnym razie zwraca wartość FALSE.

Remarks

NIEKTÓRE wymagają , aby scalar_expression porównać dodatnio z co najmniej jedną wartością zwracaną przez podzapytywanie. Instrukcje, które wymagają , aby scalar_expression porównać dodatnio z każdą wartością zwracaną przez podzapytanie, zobacz ALL (Transact-SQL). Jeśli na przykład podzapytywanie zwraca wartości 2 i 3, scalar_expression = SOME (podzapytywanie) zwróci wartość TRUE dla scalar_express 2. Jeśli podzapytywanie zwraca wartości 2 i 3, scalar_expression = ALL (podzapytywanie) zostanie obliczone jako FALSE, ponieważ niektóre wartości podzapytania (wartość 3) nie spełniają kryteriów wyrażenia.

Examples

A. Uruchamianie prostego przykładu

Poniższe instrukcje tworzą prostą tabelę i dodają wartości 1, 2, 3i 4 do kolumny ID .

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

Poniższe zapytanie zwraca TRUE wartość , ponieważ 3 jest mniejsza niż niektóre wartości w tabeli.

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

Poniższe zapytanie zwraca FALSE wartość , ponieważ 3 nie jest mniejsza niż wszystkie wartości w tabeli.

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

B. Uruchamianie praktycznego przykładu

Poniższy przykład tworzy procedurę składowaną, która określa, czy wszystkie składniki określone SalesOrderID w AdventureWorks2025 bazie danych mogą być produkowane w określonej liczbie dni. W przykładzie użyto podzapytania, aby utworzyć listę liczby DaysToManufacture wartości dla wszystkich składników określonego SalesOrderIDelementu , a następnie sprawdza, czy którakolwiek z wartości zwracanych przez podzapytywanie jest większa niż określona liczba dni. Jeśli każda zwrócona DaysToManufacture wartość jest mniejsza niż podana liczba, warunek ma wartość TRUE, a pierwszy komunikat zostanie wydrukowany.

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

Aby przetestować procedurę, wykonaj procedurę przy użyciu SalesOrderID``49080elementu , który ma jeden składnik, który wymaga 2 dni i dwóch składników, które wymagają 0 dni. Pierwsza instrukcja spełnia kryteria. Drugie zapytanie nie.

EXECUTE ManyDaysToComplete 49080, 2 ;  

Oto zestaw wyników.

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

EXECUTE ManyDaysToComplete 49080, 1 ;  

Oto zestaw wyników.

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

Zobacz także