-- 온라인 설명서 --

COALESCE (expression [ ,...n] )

- 주의
모든 인수가 NULL이면 COALESCE는 NULL을 반환합니다.

- 참고
Null 값을 적어도 하나 이상 입력해야 합니다.

COALESCE(expression1,...n)는 다음 CASE 함수와 동일합니다.

CASE
   WHEN (expression1 IS NOT NULL) THEN expression1
   ...
   WHEN (expressionN IS NOT NULL) THEN expressionN
   ELSE NULL
END

ISNULL과 COALESCE는 동일하지만 서로 다르게 동작할 수 있습니다.
Null이 아닌 매개 변수가 있는 ISNULL와 관련된 식은 NOT NULL로 판단되지만
Null이 아닌 매개 변수가 있는 COALESCE와 관련된 식은 NULL로 판단됩니다.

언젠가 프로시저를 짜면서
셀렉트 되어 나오는 결과물들을
가로형 텍스트로 나열해야 되는 일이 있었다.

성능상 최악인 커서를 피하기 위한 노력에
WHILE 문까지 동원되어 만들고 나서
나름 뿌듯해 했는데...

지난번 다녀온 세미나 정원혁 강사님의 한마디에 멍해졌다...
'COALESCE()'  넌 어디 있다 이제 나타난거니

사용법은 조금 특이하다

DECLARE @TEXT VARCHAR(MAX)  - 찍어낼 가로형 텍스트

SELECT @TEXT = COALESCE(@TEXT, '') + 나열할 컬럼 + ','
FROM 사용테이블
WHERE 조건문들 
 
SELECT  @TEXT  <-- 이러면 그 세로의 결과물들이 가로로 나온다..ㅜ.ㅡ


로직은 NULL 이 나올때 가지 붙여간다고나 할까? (허나 뒤에 ',' 붙임으로서 NULL 은 존재하지 않는거지..)
알면 손끝이 편해진다...

Posted by 스왓