터칭 데이터

Redshift - COALESCE, NULLIF, 특수한 필드명 사용방법 본문

SQL

Redshift - COALESCE, NULLIF, 특수한 필드명 사용방법

터칭 데이터 2023. 11. 16. 01:12

 

NULLIF

NULLIF 표현식은 두 인수를 비교하여 동일한 경우에는 NULL을 반환합니다. 동일하지 않으면 첫 번째 인수가 반환됩니다. 

NULLIF ( expression1, expression2 )

 

expression1과 expression2가 동일하다면 NULL을 리턴합니다.

반대로 expression1과 expression2가 다르다면 expression1을 리턴합니다.

 

 

 

 

 

 

 

COALESCE

일련의 표현식에서 NULL이 아닌 첫 번째 표현식의 값을 반환합니다. NULL이 아닌 값이 발견되면 목록의 나머지 표현식은 평가되지 않습니다. NVL은 COALESCE와 동일합니다.

 

NVL( expression, expression, ... )
COALESCE( expression, expression, ... )

 

모든 표현식이 NULL이면 결과는 NULL입니다.

 

만일 NULL값이 나올 것으로 예상된다면 NULL이 나왔을 때 NULL대신 다른 값으로 취급되길 바랄 때 사용하면 유용합니다.

 

예를 들어 COALESCE(value, 0)이라면 value가 NULL인 경우 0으로 취급하라는 뜻이고

COALESCE(values, "")라면 values가 NULL인 경우 빈문자열 취급하라는 뜻입니다.

 

 

 

 

 

 

 

공백 혹은 예약키워드를 필드 이름으로 사용하려면?

""로 둘러싸서 사용합니다. 큰 따옴표여야 합니다.

 

CREATE TABLE keeyong.test (
 group int primary key,
 'mailing address' varchar(32)
);

 

위의 쿼리는 에러가 2곳에서 발생합니다.

첫번째 group은 예약키워드이므로 에러가 납니다. 큰 따옴표로 감싸줘야 합니다.

두번째 'mailing address'는 작은 따옴표로 감쌌기 때문에 에러가 납니다. 큰 따옴표로 감싸줘야 합니다.

 

 

CREATE TABLE keeyong.test (
 "group" int primary key,
 "mailing address" varchar(32)
);
 

위와 같이 예약키워드와 공백이 포함된 필드명을 사용하고 싶다면 큰따옴표 ""로 감싸줍니다.

 

 

 

 

 

'SQL' 카테고리의 다른 글

Redshift - 트랜잭션(Transaction)  (0) 2023.11.16
Redshift - 복습겸 숙제  (0) 2023.11.16
Redshift - 복습겸 숙제  (0) 2023.11.16
Redshift - BOOLEAN과 NULL 팁  (0) 2023.11.15
Redshift - JOIN  (0) 2023.11.15