CASE WHEN BETWEEN~~ 문의~ 0 3 9,371

by 손님 [2010.09.06 17:32:48]




SELECT
CASE WHEN '2' between '04' and '09' THEN '04'
      WHEN '2' between '16' and '21' THEN '16'
      ELSE '2'
END
FROM DUAL;

위 쿼리를 실행하면 결과값은... '16' 으로 출력됩니다.

왜 '2'로 출력되지 않고 '16'으로 출력되는걸까요? ㅠ.ㅠ
by 마농 [2010.09.06 17:36:10]
문자비교와 숫자비교는 개념부터가 다릅니다.
숫자는 크기를 가지고 있어서 바로 비교가 되지만
문자는 크기가 있는게 아니라서 한글자 한글자 아스키코드값으로 비교합니다.

by 마농 [2010.09.06 17:39:24]
'2'가 '0'으로 시작하는 '09'보다 작을수는 없지요.
'2'는 '1'로 시작하는 '16'보다는 크지요.

by 현 [2010.09.06 18:11:51]
SELECT
CASE WHEN 2 between 04 and 09 THEN 04
WHEN 2 between 16 and 21 THEN 16
ELSE 2
END
FROM DUAL;

이렇게 하면 2가 나오겠네요..
숫자와 문자의 비교 차이라 할 수 있습니다.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입