Delen via


SOMMIGE | ANY (Transact-SQL)

Van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-database in Microsoft Fabric Preview

Vergelijkt een scalaire waarde met een set waarden met één kolom. SOMMIGE en ANY zijn gelijkwaardig.

Transact-SQL syntaxis-conventies

Syntax

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

Arguments

scalar_expression
Is een geldige expressie.

{ = | <> | != | > | >= | !> | < | <= | !< }
Is een geldige vergelijkingsoperator.

SOMMIGE | ENIG

Hiermee geeft u op dat er een vergelijking moet worden gemaakt.

subquery

Is een subquery met een resultatenset van één kolom. Het gegevenstype van de geretourneerde kolom moet hetzelfde gegevenstype zijn als scalar_expression.

Result types

Boolean

Result value

SOMMIGE of ANY retourneert TRUE wanneer de opgegeven vergelijking WAAR is voor een paar (scalar_expression, x) waarbij x een waarde is in de set met één kolom; retourneert anders ONWAAR.

Remarks

SOMMIGE vereist dat de scalar_expression positief vergelijkt met ten minste één waarde die wordt geretourneerd door de subquery. Zie ALL (Transact-SQL) voor instructies waarvoor de scalar_expression positief moet worden vergeleken met elke waarde die wordt geretourneerd door de subquery. Als de subquery bijvoorbeeld waarden van 2 en 3 retourneert, wordt scalar_expression = SOME (subquery) als WAAR geëvalueerd voor een scalar_express van 2. Als de subquery waarden van 2 en 3 retourneert, zou scalar_expression = ALL (subquery) ONWAAR zijn, omdat sommige waarden van de subquery (de waarde 3) niet voldoen aan de criteria van de expressie.

Examples

A. Een eenvoudig voorbeeld uitvoeren

Met de volgende instructies maakt u een eenvoudige tabel en voegt u de waarden van 1, 23en 4 de ID kolom toe.

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

De volgende query retourneert TRUE omdat 3 deze kleiner is dan sommige waarden in de tabel.

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

De volgende query retourneert FALSE omdat 3 niet minder is dan alle waarden in de tabel.

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

B. Een praktisch voorbeeld uitvoeren

In het volgende voorbeeld wordt een opgeslagen procedure gemaakt waarmee wordt bepaald of alle onderdelen van een opgegeven SalesOrderID in de AdventureWorks2022 database in het opgegeven aantal dagen kunnen worden vervaardigd. In het voorbeeld wordt een subquery gebruikt om een lijst te maken met het aantal DaysToManufacture waarden voor alle onderdelen van de specifieke SalesOrderID, en test vervolgens of een van de waarden die worden geretourneerd door de subquery groter is dan het aantal dagen dat is opgegeven. Als elke waarde van DaysToManufacture die waarde kleiner is dan het opgegeven getal, is de voorwaarde WAAR en wordt het eerste bericht afgedrukt.

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

Als u de procedure wilt testen, voert u de procedure uit met behulp van het SalesOrderID``49080, dat één onderdeel heeft dat dagen en twee onderdelen nodig 2 heeft die 0 dagen vereisen. De eerste instructie voldoet aan de criteria. De tweede query niet.

EXECUTE ManyDaysToComplete 49080, 2 ;  

Hier is het resultatenoverzicht.

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

EXECUTE ManyDaysToComplete 49080, 1 ;  

Hier is het resultatenoverzicht.

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

See also