아폴론 님이 쓰신 글 :
: COALESCE 이 함수는 조회되는 필드가 널이면 지정한 값을 주어라..이런 함수인데요..
: 테스트 해 봤습니다..
:
: select
: COALESCE(ad_bncd,'a') bncd, //==> null
: COALESCE(ad_tmcd,'a') tmcd, //==> null
: COALESCE(ad_sabn,'a') sabn //==> null
: from CLIENT
: where ad_clcd = 'A1001'
:
: 테이블과 필드는 존재하는 실제 입니다. where 대입 값 'A1001'은 없는값입니다.
: 즉 널값이 조회 되겠지요..
: 그런데 널( COALESCE)이면 a 값을 나타내라..했는데..저것이 버릇없이 null 값을 나타내네요..쩝
:
: select
: COALESCE(max(ad_bncd),'a') bncd, //==> a
: COALESCE(max(ad_tmcd),'a') tmcd, //==> a
: COALESCE(max(ad_sabn),'a') sabn //==> a
: from CLIENT
: where ad_clcd = 'A1001'
:
: 이러니..제대로 a 값을 나타 내네요..
: 누가 설명좀 해 주실래요?...ㅎㅎ
안녕하세요.
까막입니다.
첫번째 쿼리문에서 Where 조건값의 A1001 은 없다고 하셨죠?
그래서, NULL 을 반환합니다.
이 경우 Select 문에서 반환하는 값은 없는 것이죠.
그래서, Coalesce 명령 자체도 실행이 될 일이 없습니다.
두번째 쿼리문에서는 같은 조건에 Max 가 들어갔죠?
해당 조건값을 만족하는 결과셋에서 Max 가 뭔지 반환하라는 것이잖아요?
그런데, 조건에 일치하는 값이 없으므로 결과값으로 NULL 을 반환합니다.
이 경우 Select 문에서 반환하는 값은 NULL 입니다.
여기서 Coalesce 명령이 실행이 되면서 'a' 로 변환해서 나타냅니다.
결과값 자체가 없어서 NULL 이 반환되는 경우랑, 결과값이 NULL 인 경우는 다릅니다.
혼이 살아 있을까.... 대한민국.
|