식(Transact-SQL)Expressions (Transact-SQL)

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

SQL Server 데이터베이스 엔진SQL Server Database Engine에서 단일 데이터 값을 얻기 위해 평가하는 기호와 연산자 조합입니다.Is a combination of symbols and operators that the SQL Server 데이터베이스 엔진SQL Server Database Engine evaluates to obtain a single data value. 단순 식으로는 단일 상수, 변수, 열 또는 스칼라 함수가 있습니다.Simple expressions can be a single constant, variable, column, or scalar function. 연산자를 사용하면 두 개 이상의 단순 식을 결합하여 복합 식으로 만들 수 있습니다.Operators can be used to join two or more simple expressions into a complex expression.

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

구문Syntax

-- Syntax for SQL Server and Azure SQL Database  
  
{ constant | scalar_function | [ table_name. ] column | variable   
    | ( expression ) | ( scalar_subquery )   
    | { unary_operator } expression   
    | expression { binary_operator } expression   
    | ranking_windowed_function | aggregate_windowed_function  
}  
-- Syntax for Azure SQL Data Warehouse and Parallel Data Warehouse  

-- Expression in a SELECT statement  
<expression> ::=   
{  
    constant   
    | scalar_function   
    | column  
    | variable  
    | ( expression  )  
    | { unary_operator } expression   
    | expression { binary_operator } expression   
}  
[ COLLATE Windows_collation_name ]  
  
-- Scalar Expression in a DECLARE, SET, IF...ELSE, or WHILE statement  
<scalar_expression> ::=  
{  
    constant   
    | scalar_function   
    | variable  
    | ( expression  )  
    | (scalar_subquery )  
    | { unary_operator } expression   
    | expression { binary_operator } expression   
}  
[ COLLATE { Windows_collation_name ]  
  

인수Arguments

용어Term 정의Definition
constantconstant 특정한 단일 데이터 값을 나타내는 기호입니다.Is a symbol that represents a single, specific data value. 자세한 내용은 상수(Transact-SQL)을 참조하세요.For more information, see Constants (Transact-SQL).
scalar_functionscalar_function 특정 서비스를 제공하고 단일 값을 반환하는 Transact-SQLTransact-SQL 구문의 단위입니다.Is a unit of Transact-SQLTransact-SQL syntax that provides a specific service and returns a single value. scalar_function은 SUM, GETDATE 또는 CAST 함수 또는 스칼라 사용자 정의 함수와 같은 기본 제공 스칼라 함수가 될 수 있습니다.scalar_function can be built-in scalar functions, such as the SUM, GETDATE, or CAST functions, or scalar user-defined functions.
[ table_name.[ table_name. ]] 테이블의 이름 또는 별칭입니다.Is the name or alias of a table.
columncolumn 열의 이름입니다.Is the name of a column. 식에는 열 이름만 사용할 수 있습니다.Only the name of the column is allowed in an expression.
variablevariable 변수 또는 매개 변수의 이름입니다.Is the name of a variable, or parameter. 자세한 내용은 DECLARE @local_variable&#40;Transact-SQL&#41;을 참조하세요.For more information, see DECLARE @local_variable (Transact-SQL).
( expression )( expression ) 이 항목에서 정의된 바와 같이 유효한 식입니다.Is any valid expression as defined in this topic. 괄호는 안에 있는 식의 모든 연산자를 평가한 후에 그 결과를 다른 식과 결합하는 그룹 연산자입니다.The parentheses are grouping operators that make sure that all the operators in the expression within the parentheses are evaluated before the resulting expression is combined with another.
( scalar_subquery )( scalar_subquery ) 한 개의 값을 반환하는 하위 쿼리입니다.Is a subquery that returns one value. 예를 들어For example:

SELECT MAX(UnitPrice)

FROM Products
{ unary_operator }{ unary_operator } 단항 연산자는 숫자 데이터 형식 범주의 데이터 형식 하나로 평가되는 식에 대해서만 적용할 수 있습니다.Unary operators can be applied only to expressions that evaluate to any one of the data types of the numeric data type category. 단 하나의 숫자 피연산자만 있는 연산자입니다.Is an operator that has only one numeric operand:

+는 양수를 나타냅니다.+ indicates a positive number.

-는 음수를 나타냅니다.- indicates a negative number.

~는 보수 연산자를 나타냅니다.~ indicates the one's complement operator.
{ binary_operator }{ binary_operator } 두 식을 결합하여 단일 결과를 만드는 방식을 정의하는 연산자입니다.Is an operator that defines the way two expressions are combined to yield a single result. binary_operator는 산술 연산자, 대입 연산자(=), 비트 연산자, 비교 연산자, 논리 연산자, 문자열 연결 연산자(+) 또는 단항 연산자일 수 있습니다.binary_operator can be an arithmetic operator, the assignment operator (=), a bitwise operator, a comparison operator, a logical operator, the string concatenation operator (+), or a unary operator. 연산자에 대한 자세한 내용은 연산자(Transact-SQL)를 참조하세요.For more information about operators, see Operators (Transact-SQL).
ranking_windowed_functionranking_windowed_function Transact-SQLTransact-SQL 순위 함수입니다.Is any Transact-SQLTransact-SQL ranking function. 자세한 내용은 순위 함수(Transact-SQL)를 참조하세요.For more information, see Ranking Functions (Transact-SQL).
aggregate_windowed_functionaggregate_windowed_function OVER 절을 사용하는 Transact-SQLTransact-SQL 집계 함수입니다.Is any Transact-SQLTransact-SQL aggregate function with the OVER clause. 자세한 내용은 OVER 절(Transact-SQL)을 참조하세요.For more information, see OVER Clause (Transact-SQL).

식 결과Expression Results

단일 상수, 변수, 스칼라 함수, 열 이름, 데이터 정렬, 전체 자릿수, 소수 자릿수 및 식의 값으로 이루어진 단순 식은 데이터 형식, 데이터 정렬, 전체 자릿수, 소수 자릿수 및 참조된 요소의 값입니다.For a simple expression made up of a single constant, variable, scalar function, or column name: the data type, collation, precision, scale, and value of the expression is the data type, collation, precision, scale, and value of the referenced element.

비교 연산자나 논리 연산자를 사용하여 두 식을 결합하면 결과 데이터 형식은 부울이 되며 값은 TRUE, FALSE 또는 UNKNOWN 중 하나가 됩니다.When two expressions are combined by using comparison or logical operators, the resulting data type is Boolean and the value is one of the following: TRUE, FALSE, or UNKNOWN. 부울 데이터 형식에 대한 자세한 내용은 비교 연산자(Transact-SQL)를 참조하세요.For more information about Boolean data types, see Comparison Operators (Transact-SQL).

산술, 비트 또는 문자열 연산자를 사용하여 두 식을 결합하면 연산자에 따라 결과 데이터 형식이 결정됩니다.When two expressions are combined by using arithmetic, bitwise, or string operators, the operator determines the resulting data type.

복합 식은 많은 기호로 구성되며 연산자는 단일 값의 결과로 평가됩니다.Complex expressions made up of many symbols and operators evaluate to a single-valued result. 결과 식의 데이터 형식, 데이터 정렬, 전체 자릿수 및 값은 최종 결과에 도달할 때까지 한 번에 두 개씩 구성 요소 식을 결합하여 결정됩니다.The data type, collation, precision, and value of the resulting expression is determined by combining the component expressions, two at a time, until a final result is reached. 식이 결합되는 순서는 식의 연산자 우선 순위에 따라 정의됩니다.The sequence in which the expressions are combined is defined by the precedence of the operators in the expression.

RemarksRemarks

두 식이 모두 연산자가 지원하는 데이터 형식을 갖고 있으며 다음 조건 중 최소한 하나가 참인 경우에는 연산자로 두 식을 결합할 수 있습니다.Two expressions can be combined by an operator if they both have data types supported by the operator and at least one of these conditions is true:

  • 식의 데이터 형식이 동일한 경우The expressions have the same data type.

  • 우선 순위가 낮은 데이터 형식이 우선 순위가 높은 데이터 형식으로 암시적으로 변환될 수 있는 경우The data type with the lower precedence can be implicitly converted to the data type with the higher data type precedence.

식이 이러한 조건을 만족하지 않으면 CAST 또는 CONVERT 함수를 사용하여 명시적으로 우선 순위가 낮은 데이터 형식을 우선 순위가 높은 데이터 형식으로 변환하거나 중간 데이터 형식으로 변환한 후 암시적으로 우선 순위가 높은 데이터 형식으로 변환할 수 있습니다.If the expressions do not meet these conditions, the CAST or CONVERT functions can be used to explicitly convert the data type with the lower precedence to either the data type with the higher precedence or to an intermediate data type that can be implicitly converted to the data type with the higher precedence.

지원되는 명시적 변환 또는 암시적 변환이 없는 경우에는 두 식을 결합할 수 없습니다.If there is no supported implicit or explicit conversion, the two expressions cannot be combined.

문자열로 평가되는 모든 식의 데이터 정렬은 선행 정렬 규칙에 따라 설정됩니다.The collation of any expression that evaluates to a character string is set by following the rules of collation precedence. 자세한 내용은 데이터 정렬 선행 규칙(Transact-SQL)을 참조하세요.For more information, see Collation Precedence (Transact-SQL).

C 또는 MicrosoftMicrosoft Visual BasicVisual Basic과 같은 프로그래밍 언어에서 식은 항상 단일 결과로 평가됩니다.In a programming language such as C or MicrosoftMicrosoft Visual BasicVisual Basic, an expression always evaluates to a single result. Transact-SQLTransact-SQL 선택 목록의 식은 이 규칙의 변형을 따릅니다. 식은 결과 집합의 각 행에 대해 개별적으로 평가됩니다.Expressions in a Transact-SQLTransact-SQL select list follow a variation on this rule: The expression is evaluated individually for each row in the result set. 단일 식은 결과 집합의 각 행에 서로 다른 값을 가질 수 있습니다. 그러나 각 행은 식에 대해 단 하나의 값만을 가집니다.A single expression may have a different value in each row of the result set, but each row has only one value for the expression. 예를 들어 다음 SELECT 문에서 ProductID에 대한 참조와 선택 목록의 1+2 항목은 모두 식입니다.For example, in the following SELECT statement both the reference to ProductID and the term 1+2 in the select list are expressions:

USE AdventureWorks2012;  
GO  
SELECT ProductID, 1+2  
FROM Production.Product;  
GO  

1+2 식은 결과 집합의 각 행에서 3으로 평가됩니다.The expression 1+2 evaluates to 3 in each row in the result set. ProductID 식이 각 결과 집합 행에서 고유한 값을 생성하더라도 각 행은 ProductID에 대해 단 하나의 값을 가집니다.Although the expression ProductID generates a unique value in each result set row, each row only has one value for ProductID.

  • Azure SQL Data Warehouse는 각 스레드에 고정된 최대 메모리 양을 할당하므로 스레드가 모든 메모리를 소비할 수는 없습니다.Azure SQL Data Warehouse allocates a fixed maximum amount of memory to each thread so no thread can use up all the memory. 이 메모리 중 일부는 쿼리 식을 저장하는 데 사용됩니다.Some of this memory is used for storing queries’ expressions. 쿼리에 너무 많은 식이 있고 필요한 메모리가 내부 제한을 초과하는 경우 엔진이 이 쿼리를 실행하지 않습니다.If a query has too many expressions and its required memory exceeds the internal limit, the engine will not execute it. 이러한 문제를 방지하기 위해 사용자는 각각에 적은 수의 식을 포함하는 여러 쿼리로 변경할 수 있습니다.To avoid this problem, users can change the query into multiple queries with smaller number of expressions in each. 예를 들어, WHERE 절에 긴 식 목록을 포함하는 쿼리가 있습니다.For example, you have a query with a long list of expressions in the WHERE clause:
DELETE FROM dbo.MyTable 
WHERE
(c1 = '0000001' AND c2 = 'A000001') or
(c1 = '0000002' AND c2 = 'A000002') or
(c1 = '0000003' AND c2 = 'A000003') or
...

이 쿼리를 다음과 같이 변경합니다.Change this query to:

DELETE FROM dbo.MyTable WHERE (c1 = '0000001' AND c2 = 'A000001');
DELETE FROM dbo.MyTable WHERE (c1 = '0000002' AND c2 = 'A000002');
DELETE FROM dbo.MyTable WHERE (c1 = '0000003' AND c2 = 'A000003');
...

참고 항목See Also

AT TIME ZONE(Transact-SQL) AT TIME ZONE (Transact-SQL)
CASE(Transact-SQL) CASE (Transact-SQL)
CAST 및 CONVERT(Transact-SQL) CAST and CONVERT (Transact-SQL)
COALESCE(Transact-SQL) COALESCE (Transact-SQL)
데이터 형식 변환(Database Engine) Data Type Conversion (Database Engine)
데이터 형식 우선 순위(Transact-SQL) Data Type Precedence (Transact-SQL)
데이터 형식(Transact-SQL) Data Types (Transact-SQL)
기본 제공 함수s(Transact-SQL) Built-in Functions (Transact-SQL)
LIKE (Transact-SQL) LIKE (Transact-SQL)
NULLIF(Transact-SQL) NULLIF (Transact-SQL)
SELECT(Transact-SQL) SELECT (Transact-SQL)
WHERE(Transact-SQL)WHERE (Transact-SQL)