티스토리 뷰

 

 

📌 SQL COALESCE 함수

COALESCE는 주어진 순서대로 인수를 평가하고 목록에서 NULL이 아닌 첫 번째 값을 반환합니다. 

모든 값이 NULL이면 NULL을 반환합니다. 기본 구문은 다음과 같습니다.

COALESCE(expression_1, expression_2, ..., expression_n)
 
  • expression_1, expression_2, ..., expression_n :  확인하려는 값 또는 식입니다.
  • 함수는 null이 아닌 첫 번째 값을 반환하거나 모든 표현식이 NULL로 평가되는 경우 NULL을 반환합니다.

 

 

📌 기본 사용법

COALESCE 함수는 SELECT 문, WHERE 절 내, 심지어 다른 SQL 함수 내에서도 다양한 컨텍스트에서 

사용될 수 있습니다. 일반적으로 쿼리 결과에서 예기치 않은 'NULL' 값을 방지하는 데 사용됩니다.

 

 

 

📌 사용 예시

 

1. NULL을 기본값으로 바꾸기

SELECT employee_id, COALESCE(phone_number, 'N/A') AS phone_number
FROM employees;
 
    • 이 쿼리에서는 직원에게 전화번호가 없는 경우('NULL') 대신 'N/A''가 결과에 표시됩니다.

 

 

2. 여러 대체 값

SELECT order_id, COALESCE(shipping_address, billing_address, 'No Address') AS address
FROM orders;
 
    • 이 경우 COALESCE는 먼저 shipping_address를 확인합니다.
    • NULL인 경우 billing_address를 확인합니다.
    • 둘 다 'NULL'이면 'No Address'을 반환합니다.

 

 

 

📌 GOOD 사용법

 

  • NULL 값을 적절하게 처리: COALESCE를 사용하여 NULL 값이 의미 있는 기본값으로 적절하게 처리되도록 합니다. 예를 들어 'NULL'을 읽을 수 있는 자리 표시자나 기본값으로 변환하면 보고서의 데이터 명확성을 높일 수 있습니다.

 

  • 성능 최적화: COALESCE에 전달되는 표현식 수를 제한합니다. 각 표현식을 순서대로 평가하므로 주요 조건을 이미 다룬 후에는 불필요한 확인을 피하세요.

 

  • 일관된 데이터 유형: 'COALESCE' 함수의 모든 표현식이 호환 가능하거나 일관된 데이터 유형인지 확인하세요. 예를 들어, VARCHAR과 INTEGER 유형을 혼합하지 마세요. 암시적 유형 변환이 발생하여 잠재적인 성능 문제가 발생할 수 있습니다.

 

 

 

📌 BAD 사용법

 

1. 표현식이 너무 많음: COALESCE에 긴 인수 목록을 전달하면 성능이 저하될 수 있으며, 특히 처음 몇 개가 NULL인 경우가 많습니다. 이로 인해 SQL은 불필요하게 많은 표현식을 평가하게 됩니다. 

SELECT COALESCE(expr1, expr2, expr3, ..., expr10) 
FROM table;
 
    • 남용: 필요하지 않은 경우 또는 포괄적인 솔루션으로 'COALESCE'를 사용하면 쿼리를 읽고 유지 관리하기가 더 어려워질 수 있습니다. 예를 들어 실제로 NULL 값이 거의 없거나 전혀 없는 경우에도 대규모 쿼리의 모든 필드에 이를 사용하는 것은 비효율적입니다.

 

 

2. 인덱스 무시: WHERE 절에서 'COALESCE'를 사용하면 SQL이 인덱스를 효과적으로 사용하지 못하게 되어 성능 문제가 발생할 수 있습니다.

SELECT * FROM users WHERE COALESCE(first_name, last_name) = 'John';
 
 
    • 이러한 유형의 쿼리로 인해 열에서 인덱스를 사용하지 못할 수 있습니다.

 

 

 

📌 주의 사항

 

  • 데이터 유형 호환성: 데이터 유형을 혼합할 때는 주의하세요. 'COALESCE'는 NULL이 아닌 첫 번째 인수의 데이터 유형을 반환하므로 혼합 데이터 유형을 전달하면 예기치 않은 결과나 오류가 발생할 수 있습니다. SQL은 암시적 변환을 시도할 수 있으며, 이는 실패하거나 성능에 영향을 미칠 수 있습니다.

 

  • 예기치 않은 NULL 결과: 'COALESCE'에 전달한 열 중 어느 것도 'NULL'이 아닐 것으로 예상하고 이러한 가능성을 고려하지 않은 경우, 전혀 예상하지 못한 상황에서 'NULL' 결과를 얻을 수 있습니다. 그들을.

 

  • 성능 고려 사항: 'COALESCE' 함수의 각 인수는 순서대로 평가된다는 점을 명심하세요. 따라서 불필요한 평가를 피하기 위해 가능성이 가장 높은 NULL이 아닌 표현식을 일찍 배치하는 것이 좋습니다.

 

  • COALESCE 대 ISNULL: SQL Server와 같은 일부 SQL 구현에서는 'COALESCE'와 'ISNULL' 사이에 차이가 있습니다. COALESCE는 여러 인수를 사용할 수 있지만 ISNULL은 2개만 사용할 수 있습니다. 또한 'COALESCE'는 데이터 유형 우선순위에 대한 표준 SQL 규칙을 따르는 반면, 'ISNULL'은 그렇지 않으므로 데이터 유형을 혼합할 때 동작이 달라질 수 있습니다.

 

 

 

반응형