Partilhar via


ALGUNS | QUALQUER (Transact-SQL)

Aplica-se a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBase 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.

Consulte também