Megosztás a következőn keresztül:


NÉHÁNY | ANY (Transact-SQL)

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseFelügyelt Azure SQL-példánySQL-adatbázis a Microsoft Fabricben

Egy skaláris értéket hasonlít össze egy egyoszlopos értékkészlettel. A SOME és az ANY egyenértékű.

Transact-SQL szintaxis konvenciók

Syntax

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

Arguments

scalar_expression
Bármely érvényes kifejezés.

{ = | <> | != | > | >= | !> | < | <= | !< }
Érvényes összehasonlító operátor.

NÉHÁNY | BÁRMILYEN

Megadja, hogy összehasonlítást kell-e készíteni.

subquery

Egy olyan alquery, amely egy oszlop eredményhalmazával rendelkezik. A visszaadott oszlop adattípusának meg kell egyeznie az scalar_expression adattípusával.

Eredménytípusok

Boolean

Eredményérték

A NÉHÁNY vagy bármely függvény IGAZ értéket ad vissza, ha a megadott összehasonlítás IGAZ minden olyan párhoz (scalar_expression, x), ahol az x az egyoszlopos készlet értéke; ellenkező esetben HAMIS értéket ad vissza.

Remarks

NÉHÁNY megköveteli, hogy a scalar_expression pozitívan hasonlítsa össze az al lekérdezés által visszaadott legalább egy értékkel. Azoknak az utasításoknak az esetében, amelyek megkövetelik, hogy a scalar_expression pozitívan hasonlítsák össze az al lekérdezés által visszaadott értékeket, tekintse meg az ALL (Transact-SQL) című témakört. Ha például az alkikérdezés 2 és 3 értéket ad vissza, scalar_expression = NÉHÁNY (subquery) igaz értéket ad vissza a 2-scalar_express . Ha az al lekérdezés 2 és 3 értéket ad vissza, scalar_expression = AZ ÖSSZES (subquery) értéke HAMIS, mert az alquery egyes értékei (a 3 értéke) nem felelnek meg a kifejezés feltételeinek.

Examples

A. Egyszerű példa futtatása

Az alábbi utasítások létrehoznak egy egyszerű táblát, és hozzáadják 1a , 2, 3és 4 az oszlop értékeit ID .

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

A következő lekérdezés azért TRUE ad vissza, mert 3 kisebb, mint a tábla egyes értékei.

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

A következő lekérdezés azért FALSE ad vissza, mert 3 nem kisebb, mint a tábla összes értéke.

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

B. Gyakorlati példa futtatása

Az alábbi példa egy tárolt eljárást hoz létre, amely meghatározza, hogy az SalesOrderID adatbázisban megadott AdventureWorks2025 összes összetevő legyártható-e a megadott számú napon belül. A példa egy alkérdezés használatával hozza létre az adott DaysToManufactureösszetevő összes összetevőjének SalesOrderID értéklistáját, majd ellenőrzi, hogy az al lekérdezés által visszaadott értékek közül bármelyik nagyobb-e a megadott napok számánál. Ha a visszaadott érték DaysToManufacture kisebb, mint a megadott szám, a feltétel IGAZ, és az első üzenet ki lesz nyomtatva.

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

Az eljárás teszteléséhez hajtsa végre az eljárást a következővel: az SalesOrderID``49080egyik összetevő napokat és két 0 napot igénylő összetevőt tartalmaz 2 . Az első utasítás megfelel a feltételeknek. A második lekérdezés nem.

EXECUTE ManyDaysToComplete 49080, 2 ;  

Itt van az eredmények összessége.

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

EXECUTE ManyDaysToComplete 49080, 1 ;  

Itt van az eredmények összessége.

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

Lásd még