Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL-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.