Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Base de dados SQL no Microsoft Fabric
Compara um valor escalar com um conjunto de valores de coluna única. ALGUNS e QUALQUER são equivalentes.
Transact-SQL convenções de sintaxe
Syntax
scalar_expression { = | <> | != | > | >= | !> | < | <= | !< }
{ SOME | ANY } ( subquery )
Arguments
scalar_expression
É qualquer expressão válida.
{ = | <> | != | >>|= | !> | <<|= | !< }
É qualquer operador de comparação válido.
ALGUNS | QUALQUER
Especifica que deve ser feita uma comparação.
subquery
É uma subconsulta que tem um conjunto de resultados de uma coluna. O tipo de dados da coluna retornada deve ser o mesmo tipo de dados que scalar_expression.
Tipos de resultados
Boolean
Valor do resultado
SOME ou ANY retorna TRUE quando a comparação especificada é TRUE para qualquer par (scalar_expression, x) onde x é um valor no conjunto de coluna única; caso contrário, retorna FALSE.
Remarks
SOME requer que o scalar_expression compare positivamente com pelo menos um valor retornado pela subconsulta. Para instruções que exigem que o scalar_expression compare positivamente com cada valor retornado pela subconsulta, consulte ALL (Transact-SQL). Por exemplo, se a subconsulta retornar valores de 2 e 3, scalar_expression = SOME (subconsulta) será avaliada como TRUE para uma scalar_express de 2. Se a subconsulta retornar valores de 2 e 3, scalar_expression = ALL (subconsulta) será avaliada como FALSE, porque alguns dos valores da subconsulta (o valor de 3) não atenderiam aos critérios da expressão.
Examples
A. Executando um exemplo simples
As instruções a seguir criam uma tabela simples e adicionam os valores de 1, 2, 3e 4 à ID coluna.
CREATE TABLE T1
(ID INT) ;
GO
INSERT T1 VALUES (1) ;
INSERT T1 VALUES (2) ;
INSERT T1 VALUES (3) ;
INSERT T1 VALUES (4) ;
A consulta a seguir retorna TRUE porque 3 é menor do que alguns dos valores na tabela.
IF 3 < SOME (SELECT ID FROM T1)
PRINT 'TRUE'
ELSE
PRINT 'FALSE' ;
A consulta a seguir retorna FALSE porque 3 não é inferior a todos os valores na tabela.
IF 3 < ALL (SELECT ID FROM T1)
PRINT 'TRUE'
ELSE
PRINT 'FALSE' ;
B. Executando um exemplo prático
O exemplo a seguir cria um procedimento armazenado que determina se todos os componentes de um especificado SalesOrderID no AdventureWorks2025 banco de dados podem ser fabricados no número especificado de dias. O exemplo usa uma subconsulta para criar uma lista do número de DaysToManufacture valor para todos os componentes do específico SalesOrderIDe, em seguida, testa se algum dos valores retornados pela subconsulta é maior do que o número de dias especificado. Se cada valor DaysToManufacture retornado for menor que o número fornecido, a condição será TRUE e a primeira mensagem será impressa.
-- 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.' ;
Para testar o procedimento, execute o procedimento usando o SalesOrderID``49080, que tem um componente que requer 2 dias e dois componentes que exigem 0 dias. A primeira declaração cumpre os critérios. A segunda consulta não.
EXECUTE ManyDaysToComplete 49080, 2 ;
Aqui está o conjunto de resultados.
All items for this order can be manufactured in the specified number of days or less.
EXECUTE ManyDaysToComplete 49080, 1 ;
Aqui está o conjunto de resultados.
At least one item for this order can't be manufactured in specified number of days.