A중에서 영어 제목이 없는 경우 한글 제목으로 보여주세요
위와 같은 상황의 포인트는 "없는 경우"라 볼 수 있다.
이런 상황에서 쓸 수 있는 방법을 알아보려 합니다.
IFNULL
IFNULL() 함수는 주로 SQL 데이터베이스에서 사용되는 함수 중 하나로, 특히 MySQL에서 사용되는 함수입니다.
일반적인 구문은 다음과 같습니다:
IFNULL(expr1, expr2)
- expr1: 첫 번째 표현식 또는 컬럼. 이 값이 NULL이면 대체값으로 expr2가 반환됩니다.
- expr2: 두 번째 표현식 또는 컬럼. expr1이 NULL이 아닌 경우 이 값이 반환됩니다.
첫 번째 인자(expr1)가 NULL인 경우 두 번째 인자(expr2)를 반환하고, 그렇지 않으면 첫 번째 인자를 반환합니다.
즉, NULL 값을 다른 값으로 대체할 때 사용됩니다.
IFNULL함수의 첫 번째 인자가 공백 문자열(' ')인 경우
공백 문자열(' ')인 경우에는 NULL이 아니기 때문에 A의 값을 그대로 반환합니다.
만약에 첫 번째 인자가 공백 문자열을 포함하면서도 NULL로 간주하고 싶다면 어떻게 하는 것이 좋을까요?
COALESCE
COALESCE() 함수는 ANSI SQL 표준이며, 다양한 데이터베이스 시스템에서 지원되는 표준 함수 중 하나입니다.
여러 인자 중 첫 번째로 NULL이 아닌 값을 반환합니다.
이 함수는 주로 NULL 값을 다른 값으로 대체하거나 기본값을 설정할 때 사용됩니다.
일반적인 구문은 다음과 같습니다:
COALESCE(expr1, expr2, expr3, ..., exprn)
expr1, expr2, ..., exprn: 첫 번째부터 n번째까지의 표현식 또는 컬럼. 이들 중에서 NULL이 아닌 첫 번째 값이 반환됩니다.
예를 들어, 다음 쿼리에서 COALESCE() 함수는 eng_title이 NULL인 경우 빈 문자열('')을 반환하고, 그렇지 않으면 eng_title 값을 그대로 반환합니다:
SELECT COALESCE(eng_title, '') AS formatted_title FROM your_table;
또는 여러 컬럼 중에서 NULL이 아닌 값을 찾을 때 사용할 수 있습니다:
SELECT COALESCE(col1, col2, col3) AS result FROM your_table;
COALESCE() 함수의 주어진 값들 중에서 NULL이 아닌 첫 번째 값을 반환하는 점을 이용하여,
첫 번째 인자를 공백 문자열을 포함하면서도 NULL로 간주하고 싶을 때 아래처럼 COALESCE를 사용할 수 있습니다.
WHEN COALESCE(A, '') = '' then '없음'
A가 NULL이면서 공백 문자열일 때도 빈 문자열을 반환하기 때문에 없음을 판별할 수 있습니다.
사용하기
select f.code
, f.title
, CASE
WHEN COALESCE(f.eng_title, '') = '' then f.title
ELSE f.eng_title
END AS eng_title
, CASE
WHEN IFNULL(f.homepage, '') = '' then '홈페이지 없음'
ELSE f.homepage
END AS homepage
from festival f
where city = '시카고';
'database > maria db' 카테고리의 다른 글
[MariaDB] IN()함수안에 NULL이 포함되면 어떻게 될까? (0) | 2023.12.28 |
---|