00과 9의 문자열 간에 비교 0 3 1,761

by 손형선 [2008.02.05 14:06:01]


안녕하세요?

 

SEND_START_TIME 칼럼은 varchar(2) 이며 9란 값이 있었을때

 

새벽 0시에 아래 구문이 TRUE로 동작했다고 의심이 갑니다.

 

SEND_START_TIME <= TO_CHAR(SYSDATE,'HH24')

 

하지만

 

select 1 from dual where '9' < '00'; 로 해보면 FALSE 네요.

 

문자 9가 문자 00 보다 큰가요? 작은가요?

 

문자 9와 문자 09는 다른 값일까요?

 

 

by 마농 [2008.02.05 00:00:00]
문자열 비교는 왼쪽부터 한자리 한자리 비교합니다.
'9' 가 '0' 보다 크기 때문에 '9' > '00' 입니다.
물론 '9' > '09' 이지요
숫자비교시엔 9 < 10 이지만 문자 비교시엔 '9' > '10' 이지요.

by 전민수 [2008.02.10 00:00:00]
비교하는 문자열의 자리수가 다를 경우에는

예를 들어 '9' ,'00' 의 경우
2번의 비교가 필요 하지만(한자리 한자리씩 비교)
'9'의 경우에는 두번째 자리수 가 존재 하지 않기 때문에 비교 불가
즉. 첫 번째 자리 수만 비교하고 결과를 낸다는 말씀이죠?

by 마농 [2008.02.10 00:00:00]
자리수만큼 모두 비교하는것이 아닙니다.
첫번째 자리 비교에서 크기가 결정되면 두번째 자리는 비교할 필요가 없지요.
첫번째 자리의 값이 같은 경우에 두번째 비교하고 그것도 같으면 세번째 비교하는 식이지요.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입