MySQL - COALESCE() 함수

안녕하세요, 데이터베이스 열정가 여러분! 오늘 우리는 MySQL에서 정말 유용한 함수인 COALESCE()에 대해 깊이 다루어보겠습니다. COALESCE()에 대해 들어본 적이 없다면 걱정 마세요 - 이 튜토리얼이 끝나면 프로처럼 사용할 수 있을 것입니다!

MySQL - Coalesce() Function

COALESCE() 함수는 무엇인가요?

COALESCE() 함수는 MySQL 세계의 슈퍼 헴으로, 그 슈퍼 힘은 무엇일까요? 리스트에서 첫 번째 비 NULL 값을 찾는 것입니다. 당신이 차 열쇠를 찾고 있고, 그것이 있을 수 있는 장소의 리스트가 있다고 상상해보세요. COALESCE() 함수는 각 장소를 차례대로 확인한 후, 열쇠를 찾으면 그 값을 반환하고 더 이상 검색을 멈춥니다.

문법

COALESCE(value1, value2, ..., valueN)

이 함수는 임의의 개수의 인수를 받아들여 첫 번째 비 NULL 값을 반환합니다. 모든 값이 NULL이라면 NULL을 반환합니다.

COALESCE()의 기본 사용법

간단한 예제로 시작해보겠습니다:

SELECT COALESCE(NULL, 1, 2, 'three');

결과: 1

이 경우 COALESCE()는 왼쪽에서 오른쪽으로 각 값을 확인합니다:

  1. 먼저 NULL을 보고 지나갑니다.
  2. 그런 다음 1을 발견하고, 이는 NULL이 아니므로 그것을 반환하고 멈춥니다.

2이나 'three'에 도달하지 않습니다. 왜냐하면 더 이전에 비 NULL 값을 찾았기 때문입니다.

실제 사용 사례

시나리오 1: 기본값

사용자 프로필 시스템을 구축 중이라고 상상해보세요. 일부 사용자는 모든 정보를 제공하지 않을 수 있습니다. COALESCE()를 어떻게 사용할 수 있을까요?

SELECT
username,
COALESCE(full_name, username) AS display_name,
COALESCE(email, 'No email provided') AS contact
FROM users;

이 쿼리는 두 가지 지혜로운 일을 합니다:

  1. full_name이 NULL이라면 username을 표시 이름으로 사용합니다.
  2. email이 NULL이라면 'No email provided'를 표시합니다.

시나리오 2: 여러 대체 옵션

온라인 상점을 운영하고 제품 정보를 표시하고 싶다면 어떻게 할까요?

SELECT
product_name,
COALESCE(sale_price, regular_price, 'Price not available') AS displayed_price
FROM products;

이 쿼리는 다음을 수행합니다:

  1. sale_price가 있는지 확인합니다.
  2. 그렇지 않다면 regular_price를 확인합니다.
  3. 두 가지 모두 NULL이라면 'Price not available'를 표시합니다.

COALESCE()와 계산

COALESCE()는 단순한 값뿐만 아니라 계산에도 사용할 수 있습니다!

SELECT
employee_name,
COALESCE(salary * 1.1, base_rate * 40 * 52) AS yearly_income
FROM employees;

이 쿼리는 다음을 수행합니다:

  1. 급여에 10% 인상을 계산합니다.
  2. salary가 NULL이라면 시간당 급여를 기준으로 연간 수입을 계산합니다 (주 40시간, 연 52주로 가정).

COALESCE()를 WHERE 절에서 사용

COALESCE()는 데이터를 필터링하는 데 WHERE 절에서도 사용할 수 있습니다:

SELECT * FROM orders
WHERE COALESCE(shipping_date, order_date) < '2023-01-01';

이 쿼리는 배송 날짜나 주문 날짜가 2023년 1월 1일 이전인 모든 주문을 찾습니다.

COALESCE()와 IFNULL()

MySQL에는 IFNULL() 함수도 있습니다. 이는 비슷하지만 두 개의 인수에 제한됩니다:

SELECT
IFNULL(column1, 'Default') AS result1,
COALESCE(column1, column2, column3, 'Default') AS result2
FROM my_table;

COALESCE()는 여러 대체 옵션을 처리할 수 있어 더 유연합니다.

흔한 실수와 팁

  1. 순서는 중요합니다: 선호하는 값들을 먼저 넣으세요.
  2. 유형 일관성: 깨끗한 결과를 위해 데이터 유형을 일관되게 유지하세요.
  3. 성능: COALESCE()를 과도하게 사용하면 큰 데이터셋에서 쿼리 성능에 영향을 줄 수 있습니다.

실습 문제

이해를 더욱 확고히 하기 위해 몇 가지 연습 문제를 해결해보겠습니다:

  1. students 테이블을 생성하고, id, name, math_score, science_score, history_score 열을 포함합니다.
  2. 몇 가지 데이터를 삽입하고, 일부 점수를 NULL로 두십시오.
  3. 각 학생의 모든 과목 중 가장 높은 점수를 찾는 쿼리를 작성하세요.
  4. COALESCE()를 사용하여 NULL 점수를 'Not attempted'로 표시하는 쿼리를 작성하세요.

결론

COALESCE() 함수는 MySQL에서 NULL 값을 부드럽게 처리하고 더 견고한 쿼리를 만드는 데 유용한 도구입니다. 첫 번째 비 NULL 값을 찾는 것이 목적입니다. 그리고 당신이 열쇠를 가장 가능성이 높은 장소에서 먼저 찾는 것처럼!

MySQL 여정을 계속하면서 COALESCE()가 당신의 도구셋에서 필수적인 부분이 될 것입니다. 계속 연습하고, 당신의 쿼리가 항상 원하는 결과를 반환하길 바랍니다!

행복한 코딩과, 항상 원하는 결과를 얻길 바랍니다!

Credits: Image by storyset