SOME | ANY(Transact-SQL)SOME | ANY (Transact-SQL)

적용 대상: 예SQL Server 예Azure SQL Database 아니요Azure SQL Data Warehouse 아니요병렬 데이터 웨어하우스 APPLIES TO: yesSQL Server yesAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

스칼라 값을 단일 열 집합 값과 비교합니다.Compares a scalar value with a single-column set of values. SOME과 ANY는 동일합니다.SOME and ANY are equivalent.

항목 링크 아이콘 Transact-SQL 구문 규칙Topic link icon Transact-SQL Syntax Conventions

구문Syntax

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

인수Arguments

scalar_expressionscalar_expression
유효한 입니다.Is any valid expression.

{ = | <> | != | > | >= | !> | < | <= | !< }{ = | <> | != | > | >= | !> | < | <= | !< }
유효한 비교 연산자입니다.Is any valid comparison operator.

SOME | ANYSOME | ANY
비교해야 함을 지정합니다.Specifies that a comparison should be made.

subquerysubquery
하나의 열로 구성된 결과 집합을 갖는 하위 쿼리입니다.Is a subquery that has a result set of one column. 반환되는 열의 데이터 형식은 scalar_expression과 같은 데이터 형식이어야 합니다.The data type of the column returned must be the same data type as scalar_expression.

결과 형식Result Types

BooleanBoolean

결과 값Result Value

모든 쌍(scalar_expression , x)에 대해 지정된 비교 값이 TRUE일 경우 SOME이나 ANY는 TRUE를 반환하고 그렇지 않으면 FALSE를 반환합니다. 여기서 x는 단일 열 세트의 값입니다.SOME or ANY returns TRUE when the comparison specified is TRUE for any pair (scalar_expression,x) where x is a value in the single-column set; otherwise, returns FALSE.

RemarksRemarks

SOME의 경우 하위 쿼리에서 반환한 하나 이상의 값을 정확하게 비교하려면 scalar_expression이 필요합니다.SOME requires the scalar_expression to compare positively to at least one value returned by the subquery. 하위 쿼리에서 반환한 모든 값을 정확하게 비교하기 위해 scalar_expression이 필요한 문에 대한 자세한 내용은 ALL (Transact-SQL)을 참조하세요.For statements that require the scalar_expression to compare positively to every value that is returned by the subquery, see ALL (Transact-SQL). 예를 들어 하위 쿼리에서 값 2와 3을 반환할 경우 scalar_expression = SOME(하위 쿼리)은 2의 scalar_express에 대해 TRUE로 계산됩니다.For instance, if the subquery returns values of 2 and 3, scalar_expression = SOME (subquery) would evaluate as TRUE for a scalar_express of 2. 하위 쿼리에서 값 2와 3을 반환할 경우에는 하위 쿼리 값(값 3)의 일부가 식의 조건을 만족하지 않으므로 scalar_expression = ALL(하위 쿼리)은 FALSE로 계산됩니다.If the subquery returns values of 2 and 3, scalar_expression = ALL (subquery) would evaluate as FALSE, because some of the values of the subquery (the value of 3) wouldn't meet the criteria of the expression.

Examples

1.A. 간단한 예 실행Running a simple example

다음 문에서는 간단한 테이블을 만들고 1 열에 값 2, 3, 4ID를 추가합니다.The following statements create a simple table and add the values of 1, 2, 3, and 4 to the ID column.

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

다음 쿼리는 TRUE이 테이블의 일부 값보다 작기 때문에 3를 반환합니다.The following query returns TRUE because 3 is less than some of the values in the table.

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

다음 쿼리는 FALSE이 테이블의 모든 값보다 작기 때문에 3를 반환합니다.The following query returns FALSE because 3 isn't less than all of the values in the table.

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

2.B. 실제 예 실행Running a practical example

다음 예에서는 SalesOrderID 데이터베이스에서 지정한 AdventureWorks2012의 모든 구성 요소를 지정된 기간 내에 제조할 수 있는지 여부를 결정하는 저장 프로시저를 만듭니다.The following example creates a stored procedure that determines whether all the components of a specified SalesOrderID in the AdventureWorks2012 database can be manufactured in the specified number of days. 이 예에서는 하위 쿼리를 사용하여 특정 DaysToManufacture의 모든 구성 요소에 대해 SalesOrderID 값의 숫자 목록을 만든 다음 하위 쿼리에서 반환한 값 중 지정된 일 수를 초과하는 값이 있는지 테스트합니다.The example uses a subquery to create a list of the number of DaysToManufacture value for all the components of the specific SalesOrderID, and then tests whether any of the values that are returned by the subquery are greater than the number of days specified. 반환된 DaysToManufacture의 모든 값이 제공된 숫자보다 작을 경우 조건은 TRUE이며 첫 번째 메시지가 출력됩니다.If every value of DaysToManufacture that is returned is less than the number provided, the condition is TRUE and the first message is printed.

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

프로시저를 테스트하려면 2일이 필요한 한 개의 구성 요소 및 0일이 필요한 두 개의 구성 요소가 포함되어 있는 SalesOrderID``49080을 사용하여 프로시저를 실행합니다.To test the procedure, execute the procedure by using the SalesOrderID``49080, which has one component that requires 2 days and two components that require 0 days. 첫 번째 문은 조건을 만족합니다.The first statement meets the criteria. 두 번째 쿼리는 만족하지 않습니다.The second query doesn't.

EXECUTE ManyDaysToComplete 49080, 2 ;  

결과 집합은 다음과 같습니다.Here is the result set.

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

EXECUTE ManyDaysToComplete 49080, 1 ;  

결과 집합은 다음과 같습니다.Here is the result set.

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

참고 항목See Also

ALL (Transact-SQL) ALL (Transact-SQL)
CASE(Transact-SQL) CASE (Transact-SQL)
기본 제공 함수s(Transact-SQL) Built-in Functions (Transact-SQL)
연산자(Transact-SQL) Operators (Transact-SQL)
SELECT(Transact-SQL) SELECT (Transact-SQL)
WHERE(Transact-SQL) WHERE (Transact-SQL)
IN(Transact-SQL)IN (Transact-SQL)