까막.윤창희 님이 쓰신 글 :
: 아폴론 님이 쓰신 글 :
: : 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 인 경우는 다릅니다.
윤창희님 답변 감사합니다..
음..말꼬리 잡는거 같은데..절대 아니구요..제가이해가 안돼서요..ㅎㅎ
첫번째나 두번째나.. COALESCE 문이..같이 where 절에 만족하는 값이 없는데..
즉, 모두 널인데..
max시는 값이 없어도 실행되는 뭔가가 있나보군요..
그 뭔가를 아직 이해 하지 못하고 있습니다...ㅎㅎ
|