조건 함수
중요
신규 고객은 더 이상 Amazon S3 Select를 사용할 수 없습니다. Amazon S3 Select 기존 고객은 평소처럼 이 기능을 계속 사용할 수 있습니다. 자세히 알아보기
Amazon S3 Select에서는 다음과 같은 조건부 함수를 지원합니다.
CASE
CASE
표현식은 다른 언어에서 볼 수 있는 if/then/else
문과 유사한 조건부 표현식입니다. CASE
는 여러 조건이 있을 때 결과를 지정하는 데 사용됩니다. CASE
표현식은 단순(simple)과 검색(searched), 두 가지 유형이 있습니다.
단순 CASE
표현식에서는 표현식과 값을 비교합니다. 이때 일치하는 부분이 발견되면 THEN
절에서 지정된 작업이 적용됩니다. 일치하는 부분이 발견되지 않으면 ELSE
절에서 지정된 작업이 적용됩니다.
검색 CASE
표현식에서는 각 CASE
가 부울 표현식에 따라 평가되고, CASE
문이 처음 일치하는 CASE
를 반환합니다. WHEN
절 사이에서 일치하는 CASE
이 발견되지 않으면 ELSE
절의 작업이 반환됩니다.
구문
참고
현재 Amazon S3 Select는 ORDER BY
또는 새 줄이 포함된 쿼리를 지원하지 않습니다. 줄 바꿈 없이 쿼리를 사용해야 합니다.
다음은 조건을 일치시키는 데 사용되는 단순 CASE
문입니다.
CASE
expression
WHENvalue
THENresult
[WHEN...] [ELSEresult
] END
다음은 각 조건을 평가하는 데 사용되는 검색 CASE
문입니다.
CASE WHEN
boolean condition
THENresult
[WHEN ...] [ELSEresult
] END
예
참고
Amazon S3 콘솔을 사용하여 다음 예제를 실행하고 CSV 파일에 헤더 행이 포함된 경우CSV 데이터의 첫 번째 줄 제외를 선택하세요.
예제 1: 쿼리에서 단순 CASE
표현식을 사용하여 New York City
를 Big Apple
로 바꿉니다. 그 밖의 도시 이름은 모두 other
로 변경합니다.
SELECT venuecity, CASE venuecity WHEN 'New York City' THEN 'Big Apple' ELSE 'other' END FROM S3Object;
쿼리 결과:
venuecity | case -----------------+----------- Los Angeles | other New York City | Big Apple San Francisco | other Baltimore | other ...
예제 2: 검색 CASE
표현식을 사용하여 개별 티켓 판매에 대한 pricepaid
값을 기준으로 그룹 번호를 할당합니다.
SELECT pricepaid, CASE WHEN CAST(pricepaid as FLOAT) < 10000 THEN 'group 1' WHEN CAST(pricepaid as FLOAT) > 10000 THEN 'group 2' ELSE 'group 3' END FROM S3Object;
쿼리 결과:
pricepaid | case -----------+--------- 12624.00 | group 2 10000.00 | group 3 10000.00 | group 3 9996.00 | group 1 9988.00 | group 1 ...
COALESCE
COALESCE
는 인수를 순서대로 평가하여 알 수 없는 첫 번째 값, 즉 첫 번째 null이 아니거나 누락되지 않은 값을 반환합니다. 이 함수는 null과 누락 값을 전파하지 않습니다.
구문
COALESCE (
expression
,expression
, ... )
파라미터
-
expression
-
함수가 실행되는 대상 표현식입니다.
예
COALESCE(1) -- 1 COALESCE(null) -- null COALESCE(null, null) -- null COALESCE(missing) -- null COALESCE(missing, missing) -- null COALESCE(1, null) -- 1 COALESCE(null, null, 1) -- 1 COALESCE(null, 'string') -- 'string' COALESCE(missing, 1) -- 1
NULLIF
두 개의 표현식이 주어질 경우 그 두 표현식이 같은 값으로 평가된다면 NULLIF
는 NULL
을 반환하고, 그렇지 않다면 NULLIF
는 첫 번째 표현식을 평가한 결과를 반환합니다.
구문
NULLIF (
expression1
,expression2
)
파라미터
-
expression1
,expression2
-
함수가 실행되는 대상 표현식들입니다.
예
NULLIF(1, 1) -- null NULLIF(1, 2) -- 1 NULLIF(1.0, 1) -- null NULLIF(1, '1') -- 1 NULLIF([1], [1]) -- null NULLIF(1, NULL) -- 1 NULLIF(NULL, 1) -- null NULLIF(null, null) -- null NULLIF(missing, null) -- null NULLIF(missing, missing) -- null