Goal
- CHOOSE 이해하기
- GREATEST 이해하기
- IIF 이해하기
- LEAST 이해하기
CHOOSE (Transact-SQL)
SQL Server의 값 목록에서 지정된 인덱스에 있는 항목을 반환합니다.
구문
CHOOSE ( index, val_1, val_2 [, val_n ] )
인수
index 인수 다음에 나오는 항목에 대한 1부터 시작하는 인덱스를 나타내는 정수 식입니다.
int 이외의 숫자 데이터 형식으로 된 인덱스 값을 제공할 경우 값이 암시적으로 정수로 변환됩니다. 인덱스 값이 값 배열 한계를 초과하면 CHOOSE는 Null을 반환합니다.
val_1 ... val_n
임의의 데이터 형식으로 된 심표로 구분된 값 목록 입니다.
반환 형식
함수에 전달된 형식 집합 중에서 우선 순위가 가장 높은 데이터 형식을 변환합니다. 자세한 내용은 데이터 형식 우선 순위(Transact-SQL)를 참조하세요.
설명
CHOOSE는 배열에서 인덱스와 같은 역활을 하며 배열은 index 인수 다음에 나오는 인수로 구성됩니다. index 인수느 다음 중 반환될 값을 결정합니다.
예제
A.간단한 CHOOSE 예제
다음 예에서는 제공된 값 목록에 세 번째 항목을 반환합니다.
SELECT CHOOSE ( 3, 'Manager', 'Director', 'Developer', 'Tester' ) AS Result;
결과 집합을 다음과 같습니다.
Result
-------------
Developer
(1 row(s) affected)
B.열을 기반으로 하는 간단한 CHOOSE 예제
USE AdventureWorks2012;
GO
SELECT ProductCategoryID, CHOOSE (ProductCategoryID, 'A','B','C','D','E') AS Expression1
FROM Production.ProductCategory;
결과 집합은 다음과 같습니다.
ProductCategoryID Expression1
----------------- -----------
3 C
1 A
2 B
4 D
(4 row(s) affected)
C.MONTH와 조합된 CHOOSE
다음 예제에서는 직원이 고용된 시즌을 반환합니다. MONTH 함수는 HIREDATE 열에서 월 값을 반환합니다.
USE AdventureWorks2012;
GO
SELECT JobTitle, HireDate, CHOOSE(MONTH(HireDate),'Winter','Winter', 'Spring','Spring','Spring','Summer','Summer',
'Summer','Autumn','Autumn','Autumn','Winter') AS Quarter_Hired
FROM HumanResources.Employee
WHERE YEAR(HireDate) > 2005
ORDER BY YEAR(HireDate);
결과 집합은 다음과 같습니다.
JobTitle HireDate Quarter_Hired
-------------------------------------------------- ---------- -------------
Sales Representative 2006-11-01 Autumn
European Sales Manager 2006-05-18 Spring
Sales Representative 2006-07-01 Summer
Sales Representative 2006-07-01 Summer
Sales Representative 2007-07-01 Summer
Pacific Sales Manager 2007-04-15 Spring
Sales Representative 2007-07-01 Summer
GREATEST(Transact-SQL)
이 함수는 하나 이상의 식 목록에서 최댓값을 반환합니다.
구문
GREATEST ( expression1 [ ,...expressionN ] )
인수
expression 1, expressionN
비교 가능한 모든 데이터 형식의 쉼표로 구분된 식 목록 입니다. GREATEST 함수에는 인수가 하나 이상 필요하며 이 함수는 인수를 254개 이하로 지원합니다.
각 식은 상수, 변수, 열 이름 또는 함수와 산수르 비트 , 문자열 연산자와 조합일 수 있습니다. 집계 함수와 스칼라 하위 쿼리는 허용되지 않습니다.
반환 형식
함수에 전달된 형식 집합 중에서 우선 순위가 가장 높은 데이터 형식을 반환합니다. 자세한 내용은 데이터 형식 우선 순위(Transact-SQL)를 참조하세요.
모든 인수의 데이터 형식이 같으며 형식이 비교에 지원되는 경우 GREATEST는 해당 형식을 반환합니다.
그렇지 않으면 함수는 비교하기 전에 모든 인수를 우선 순위가 가장 높은 데이터 형식으로 암시적으로 변환한 후 이 형식을 반환 형식으로 사용합니다.
숫자 형식의 경우 반환 형식의 소수 자릿수는 우선 순위가 가장 높은 인수와 같거나, 둘 이상의 인수가 우선 순위가 가장 높은 데이터 형식인 경우 가장 큰 소수 자리수가 됩니다.
설명
인수 목록에 있는 모든 식은 비교 가능하고 우선 순위가 가장 높은 인수의 데이터 형식으로 암시적으로 변환될 수 있는 데이터 형식이어야 합니다.
모든 인수를 우선 순위가 가장 높은 데이터 형식으로 암시적으로 변환하는 작업은 비교 전에 수행됩니다.
인수간의 암시적 형식 변환이 지원되지 않으면 함수가 실패하고 오류가 반환됩니다.
암시적 및 명시적 데이터 변환에 대한 자세한 내용은 데이터 형식 변환(데이터베이스 엔진)을 참조하세요.
하나 이상의 인수가 NULL이 아닌 경우 비교 중에 NULL 인수가 무시됩니다. 모든 인수가 NULL인 경우 GREATEST는 NULL을 반환합니다.
문자 인수 비교는 데이터 정렬 우선 순위(Transact-SQL)의 규칙을 따릅니다.
다음 형식은 GREATEST에서 비교에 지원되지 않습니다. 8,000바이트를 초과하는 varchar(max), varbinary(max) 또는 nvarchar(max), 커서, 기하 도형, 지리, 이미지, 바이트 비정렬 사용자 정의 형식, ntext, 테이블, 텍스트, xml
varchar(max), varbinary(max), nvarchar(max) 데이터 형식은 8,000바이트 이하인 인수에 지원되며, 비교 전에 각각 varchar(n), varbinary(n), nvarchar(n)로 암시적으로 변환됩니다.
예를 들어 단일 바이트 인코딩 문자 집합을 사용하는 경우 varchar(max)은 최대 8,000 개의 문자를 지원할 수 있고, nvarchar(max)은 최대 4,000바이트 쌍을 지원할 수 있습니다 (UTF-16 문자 인코딩이라고 가정).
예제
A. 간단한 예다음 예에서는 제공된 상수 목록의 최댓값을 반환합니다.
반환 형식의 소수 자릿수는 우선 순위가 가장 높은 데이터 형식의 인수 소수 자릿수에 따라 결정됩니다.
SELECT GREATEST ( '6.62', 3.1415, N'7' ) AS GreatestVal;
GO
GreatestVal
--------
7.0000
(1 rows affected)
B. 문자 형식을 사용하는 간단한 예
SELECT GREATEST ('Glacier', N'Joshua Tree', 'Mount Rainier') AS GreatestString;
GO
GreatestString
-------------
Mount Rainier
(1 rows affected)
IIF(Transact-SQL)
SQL Server에서 부울 식이 true 인지 False 인지에 따라 두 값 중 하나를 반환합니다.
구문
IIF( boolean_expression, true_value, false_value )
인수
boolean_expression
유요한 부울 식입니다.
true_value
boolean_expression이 true로 평가되면 반환할 값입니다.
false_value
boolean_expression 이 false로 평가되면 반환할 값입니다.
반환 형식
true_value와 false_value 형식에서 우선 순위가 가장 높은 데이터 형식을 반환합니다. 자세한 내용은 데이터 형식 우선 순위(Transact-SQL)를 참조하세요.
설명
IIF는 CASE 문을 작성하는 약식 방법입니다. 첫 번째 인수로 전달되는 부울 식의 경우 평가 결과에 따라 나머지 두 인수 중 하나가 변환 됩니다 .즉, 부울 식이 True 이면 true_value 가 반환되고, 부울 식이 false 이거나 알 수 없으면 false_value 가 반환됩니다. true_value 및 false_value 는 모든 형식일 수 있습니다 . 부울 식, null 처리 및 반환 형식에 대해 case 문에 적용되는 규칙이 iif에도 적용됩니다. . 자세한 내용은 CASE(Transact-SQL)를 참조하세요.
IIF가 case로 변환된다는 점은 이 함수의 다른 동작에도 영향을 줍니다. CASE 문은 최대 10개 수준만 중첩될 수 있으므로 IIF 문도 최대 10개 수준만 중첩될 수 있습니다. 또한 IIF는 원격 실행되는 CASE 문과 모든 동작이 같으므로 다른 서버에 대해 기능적으로 동일한 CASE 문으로 원격 실행됩니다.
예제
A. 간단한 IIF 예
DECLARE @a INT = 45, @b INT = 40;
SELECT [Result] = IIF( @a > @b, 'TRUE', 'FALSE' );
Result
--------
TRUE
B. NULL 상수가 있는 IIF
SELECT [Result] = IIF( 45 > 30, NULL, NULL );
C. NULL 매개 변수가 있는 IIF
DECLARE @P INT = NULL, @S INT = NULL;
SELECT [Result] = IIF( 45 > 30, @P, @S );
Result
--------
NULL
논리 함수 - LEAST(Transact-SQL)
이 함수는 하나 이상의 식 목록에서 최솟값을 반환합니다.
구문
LEAST ( expression1 [ ,...expressionN ] )
인수
expression1, expressionN
비교 가능한 모든 데이터 형식의 쉼표로 구분된 식 목록입니다. LEAST 함수에는 인수가 하나 이상 필요하며 이 함수는 인수를 254개 이하로 지원합니다.
각 식은 상수, 변수, 열 이름 또는 함수와 산술, 비트, 문자열 연산자의 조합일 수 있습니다. 집계 함수와 스칼라 하위 쿼리는 허용되지 않습니다.
반환 형식
함수에 전달된 형식 집합 중에서 우선 순위가 가장 높은 데이터 형식을 반환합니다. 자세한 내용은 데이터 형식 우선 순위(Transact-SQL)를 참조하세요.
모든 인수의 데이터 형식이 같으며 형식이 비교에 지원되는 경우 LEAST는 해당 형식을 반환합니다.
그렇지 않으면 함수는 비교하기 전에 모든 인수를 우선 순위가 가장 높은 데이터 형식으로 암시적으로 변환한 후 이 형식을 반환 형식으로 사용합니다.
숫자 형식의 경우 반환 형식의 소수 자릿수는 우선 순위가 가장 높은 인수와 같거나, 둘 이상의 인수가 우선 순위가 가장 높은 데이터 형식인 경우 가장 큰 소수 자릿수가 됩니다.
설명
인수 목록에 있는 모든 식은 비교 가능하고 우선 순위가 가장 높은 인수의 데이터 형식으로 암시적으로 변환될 수 있는 데이터 형식이어야 합니다.
모든 인수를 우선 순위가 가장 높은 데이터 형식으로 암시적으로 변환하는 작업은 비교 전에 수행됩니다.
인수 간의 암시적 형식 변환이 지원되지 않으면 함수가 실패하고 오류가 반환됩니다.
암시적 및 명시적 데이터 변환에 대한 자세한 내용은 데이터 형식 변환(데이터베이스 엔진)을 참조하세요.
하나 이상의 인수가 NULL이 아닌 경우 비교 중에 NULL 인수가 무시됩니다. 모든 인수가 NULL인 경우 LEAST는 NULL을 반환합니다.
문자 인수 비교는 데이터 정렬 우선 순위(Transact-SQL)의 규칙을 따릅니다.
다음 형식은 LEAST에서 비교에 지원되지 않습니다. 8,000바이트를 초과하는 varchar(max), varbinary(max) 또는 nvarchar(max), 커서, 기하 도형, 지리, 이미지, 바이트 비정렬 사용자 정의 형식, ntext, 테이블, 텍스트, xml.
varchar(max), varbinary(max), nvarchar(max) 데이터 형식은 8,000바이트 이하인 인수에 지원되며, 비교 전에 각각 varchar(n), varbinary(n), nvarchar(n)로 암시적으로 변환됩니다.
예를 들어 단일 바이트 인코딩 문자 집합을 사용하는 경우 varchar(max)은 최대 8,000개의 문자를 지원할 수 있고, nvarchar(max)은 최대 4,000바이트 쌍을 지원할 수 있습니다(UTF-16 문자 인코딩이라고 가정).
예제
A. 간단한 예
다음 예에서는 제공된 상수 목록의 최솟값을 반환합니다.
반환 형식의 소수 자릿수는 우선 순위가 가장 높은 데이터 형식의 인수 소수 자릿수에 따라 결정됩니다.
SELECT LEAST ( '6.62', 3.1415, N'7' ) AS LeastVal;
GO
LeastVal
-------
3.1415
(1 rows affected)
B. 문자 형식을 사용하는 간단한 예
다음 예에서는 제공된 문자 상수 목록의 최솟값을 반환합니다.
SELECT LEAST ('Glacier', N'Joshua Tree', 'Mount Rainier') AS LeastString;
GO
LeastString
-------------
Glacier
(1 rows affected)
'데이터베이스' 카테고리의 다른 글
날짜 및 시간 데이터 형식 및 함수 (0) | 2021.05.20 |
---|---|
SQL 데이터베이스 함수란? (0) | 2021.05.20 |
저장 프로시저 (0) | 2021.04.29 |
뷰(View) (0) | 2021.04.29 |
인덱스 생성/변경/삭제 (0) | 2021.04.27 |