Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL-databas i Förhandsversion av Microsoft Fabric
Jämför ett skalärt värde med en uppsättning värden med en kolumn. VISSA och ANY är likvärdiga.
Transact-SQL syntaxkonventioner
Syntax
scalar_expression { = | <> | != | > | >= | !> | < | <= | !< }
{ SOME | ANY } ( subquery )
Arguments
scalar_expression
Är ett giltigt uttryck.
{ = | <> | != | > | >= | !> | < | <= | !< }
Är en giltig jämförelseoperator.
NÅGRA | VILKEN SOM HELST
Anger att en jämförelse ska göras.
subquery
Är en underfråga som har en resultatuppsättning med en kolumn. Datatypen för kolumnen som returneras måste vara samma datatyp som scalar_expression.
Result types
Boolean
Result value
VISSA eller ALLA returnerar TRUE när den angivna jämförelsen är TRUE för valfritt par (scalar_expression, x) där x är ett värde i enkolumnsuppsättningen. annars returnerar FALSE.
Remarks
VISSA kräver att scalar_expression jämför positivt med minst ett värde som returneras av underfrågan. Instruktioner som kräver att scalar_expression jämför positivt med varje värde som returneras av underfrågan finns i ALLA (Transact-SQL). Om underfrågan till exempel returnerar värden på 2 och 3 utvärderas scalar_expression = SOME (subquery) som TRUE för en scalar_express på 2. Om underfrågan returnerar värden på 2 och 3 skulle scalar_expression = ALL (underfråga) utvärderas som FALSE, eftersom vissa av värdena för underfrågan (värdet 3) inte uppfyller uttryckets villkor.
Examples
A. Köra ett enkelt exempel
Följande instruktioner skapar en enkel tabell och lägger till värdena 1för , 2, 3och 4 till ID kolumnen.
CREATE TABLE T1
(ID INT) ;
GO
INSERT T1 VALUES (1) ;
INSERT T1 VALUES (2) ;
INSERT T1 VALUES (3) ;
INSERT T1 VALUES (4) ;
Följande fråga returneras TRUE eftersom 3 är mindre än några av värdena i tabellen.
IF 3 < SOME (SELECT ID FROM T1)
PRINT 'TRUE'
ELSE
PRINT 'FALSE' ;
Följande fråga returneras FALSE eftersom 3 inte är mindre än alla värden i tabellen.
IF 3 < ALL (SELECT ID FROM T1)
PRINT 'TRUE'
ELSE
PRINT 'FALSE' ;
B. Köra ett praktiskt exempel
I följande exempel skapas en lagrad procedur som avgör om alla komponenter i en angiven SalesOrderID i AdventureWorks2022 databasen kan tillverkas under det angivna antalet dagar. I exemplet används en underfråga för att skapa en lista över antalet DaysToManufacture värden för alla komponenter i den specifika SalesOrderIDoch testar sedan om något av de värden som returneras av underfrågan är större än det angivna antalet dagar. Om varje värde för DaysToManufacture det returneras är mindre än det angivna talet är villkoret TRUE och det första meddelandet skrivs ut.
-- 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.' ;
Om du vill testa proceduren kör du proceduren SalesOrderID``49080med hjälp av , som har en komponent som kräver 2 dagar och två komponenter som kräver 0 dagar. Den första instruktionen uppfyller kriterierna. Den andra frågan gör det inte.
EXECUTE ManyDaysToComplete 49080, 2 ;
Här är resultatet.
All items for this order can be manufactured in the specified number of days or less.
EXECUTE ManyDaysToComplete 49080, 1 ;
Här är resultatet.
At least one item for this order can't be manufactured in specified number of days.