Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL databáze v Microsoft Fabric
Porovná skalární hodnotu se sadou hodnot s jedním sloupcem. NĚKTERÉ a ANY jsou ekvivalentní.
Syntax
scalar_expression { = | <> | != | > | >= | !> | < | <= | !< }
{ SOME | ANY } ( subquery )
Arguments
scalar_expression
Je libovolný platný výraz.
{ = | <> | != | > | >= | !> | < | <= | !< }
Je jakýkoli platný relační operátor.
NĚKTERÉ | JAKÝKOLI
Určuje, že se má provést porovnání.
subquery
Je poddotaz, který má sadu výsledků jednoho sloupce. Datový typ vráceného sloupce musí být stejný datový typ jako scalar_expression.
Typy výsledků
Boolean
Hodnota výsledku
Funkce SOME nebo ANY vrátí hodnotu TRUE , pokud je zadané porovnání pravda pro libovolnou dvojici (scalar_expression, x), kde x je hodnota v sadě s jedním sloupcem; v opačném případě vrátí hodnotu FALSE.
Remarks
NĚKTERÉ vyžadují , aby scalar_expression porovnat pozitivně s alespoň jednou hodnotou vrácenou poddotazem. Příkazy, které vyžadují , aby scalar_expression porovnat pozitivně s každou hodnotou vrácenou poddotazem, viz ALL (Transact-SQL). Pokud například poddotaz vrátí hodnoty 2 a 3, scalar_expression = SOME (poddotaz) by se pro scalar_express ze 2 vyhodnotil jako PRAVDA. Pokud poddotaz vrátí hodnoty 2 a 3, scalar_expression = ALL (poddotaz) by se vyhodnotil jako NEPRAVDA, protože některé hodnoty poddotazů (hodnota 3) nesplní kritéria výrazu.
Examples
A. Spuštění jednoduchého příkladu
Následující příkazy vytvoří jednoduchou tabulku a přidají hodnoty 1, 2, 3a 4 do ID sloupce.
CREATE TABLE T1
(ID INT) ;
GO
INSERT T1 VALUES (1) ;
INSERT T1 VALUES (2) ;
INSERT T1 VALUES (3) ;
INSERT T1 VALUES (4) ;
Následující dotaz vrátí TRUE , protože 3 je menší než některé hodnoty v tabulce.
IF 3 < SOME (SELECT ID FROM T1)
PRINT 'TRUE'
ELSE
PRINT 'FALSE' ;
Následující dotaz vrátí hodnotu FALSE , protože 3 není menší než všechny hodnoty v tabulce.
IF 3 < ALL (SELECT ID FROM T1)
PRINT 'TRUE'
ELSE
PRINT 'FALSE' ;
B. Spuštění praktického příkladu
Následující příklad vytvoří uloženou proceduru, která určuje, zda lze všechny součásti zadané SalesOrderID v AdventureWorks2025 databázi vyrábět v zadaném počtu dnů. V příkladu se pomocí poddotaz vytvoří seznam počtu DaysToManufacture hodnot pro všechny součásti konkrétního objektu SalesOrderIDa pak otestuje, jestli některé z hodnot vrácených poddotazem jsou větší než zadaný počet dní. Pokud je každá vrácená DaysToManufacture hodnota menší než zadané číslo, podmínka je PRAVDA a první zpráva se vytiskne.
-- 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.' ;
Chcete-li otestovat proceduru, spusťte proceduru pomocí SalesOrderID``49080, která má jednu komponentu, která vyžaduje 2 dny a dvě komponenty, které vyžadují 0 dní. První příkaz splňuje kritéria. Druhý dotaz ne.
EXECUTE ManyDaysToComplete 49080, 2 ;
Tady je soubor výsledků.
All items for this order can be manufactured in the specified number of days or less.
EXECUTE ManyDaysToComplete 49080, 1 ;
Tady je soubor výsledků.
At least one item for this order can't be manufactured in specified number of days.