본문 바로가기

개발/05.SQL

[MariaDB] CONCAL과 COALESCE 차이

728x90
반응형

배경 : 회사에서 반영했는데, 리스트 데이터 조회하는데 하나가 null로 나오는것임

데이터 있는데? 왜?

 

내용

 

예시)

컬럼에 이렇게 되어있다.


CONCAT((SELECT ORG_NM FROM ORGANIZATION WHERE ORG_CD = A.ORG_CD), ' / ' , A.USER_NM, '(', JCEM.USER_ID, ') / ', A.ROLE_LEVEL_NM)  AS USER_NM

 

CONCAT 으로 감싸면 그 안에있는 데이터중 하나라도 NULL이 있으면 전체가 NULL로 나온다

 

COALESCE로 사용할 경우 그 안에 있는 데이터 중 NULL이 있으면 NULL만 빼고 나머지는 그대로 나온다.

 

 

마무리 정리는 퍼플렉시티로 한다.

CONCAT 함수

CONCAT은 여러 문자열을 하나로 결합하는 데 사용됩니다15.

  • 기본 사용법: CONCAT(문자열1, 문자열2, ...)
  • 여러 문자열이나 컬럼을 순서대로 연결합니다6.
  • NULL 값이 포함되면 해당 값을 무시하고 나머지 문자열을 연결합니다1.

COALESCE 함수

COALESCE는 여러 인수 중 첫 번째로 NULL이 아닌 값을 반환합니다5.

  • 기본 사용법: COALESCE(값1, 값2, ...)
  • 주로 NULL 값을 다른 값으로 대체할 때 사용됩니다5.
  • 모든 인수가 NULL이면 NULL을 반환합니다.

주요 차이점

  1. 목적:
    • CONCAT: 문자열 결합
    • COALESCE: NULL 처리
  2. NULL 처리:
    • CONCAT: NULL을 무시하고 나머지 문자열 연결
    • COALESCE: 첫 번째 non-NULL 값 반환
  3. 반환 타입:
    • CONCAT: 항상 문자열 반환
    • COALESCE: 첫 번째 non-NULL 인수의 데이터 타입을 따름
  4. 사용 사례:
    • CONCAT: 여러 컬럼이나 문자열을 하나로 합칠 때
    • COALESCE: NULL 값을 기본값으로 대체하거나 여러 컬럼 중 첫 번째 non-NULL 값을 선택할 때

두 함수를 조합하여 사용하면 NULL 처리와 문자열 결합을 동시에 수행할 수 있습니다

 

 

728x90
반응형