날짜형식 중에 like로 검색하는 것에 대해 질문입니다. 0 4 3,104

by 하혜진 [2008.06.16 02:42:56]



문제를 풀다가 궁금한 점이 있어서 질문을 올려요~

형식은 날짜형식인데 년도를 1994년도 인것을 검색하는 문제인데요

날짜형식은 like %로 되면.. 문자열형식과 호환된다는 건가요?

몰라서 답을 찾아보기는 했는데..

IN 쓰면 리터럴 문자라서 잘못된 타입이다~ 이렇게 나오는데

그냥 날짜가 07-JUN-94 라서 마지막 것을 비교 검색하기 때문에

답이 나오는 건가요?

초짜라 정확히 잘 모르겠네요;; 하하 고수님들의 애정어린(?) 답변 부탁드리겠습니다.

어떤 차이가 있어서 이렇게 검색이 되서 답이 나오는지가 궁금해서 질문을 올려요~

그럼 오늘도 좋은 하루 보내세요~♡

by 채용근 [2008.06.16 08:53:02]
hire_date 가 묵시적 형변환이 일어납니다. to_char 로

형식은 맞춰줘야겠죠

by 마농 [2008.06.16 09:12:03]
날짜와 문자와의 비교에서는 날짜가 우선입니다.
즉, 문자가 날짜로 변형되어서 비교가 되지요.
IN 의 경우 '1994'가 날짜로 변경되다가 오류가 나는 것입니다.
하지만 LIKE 는 오로지 문자비교형 함수이기 때문에 오히려 반대로 날짜형이 문자형으로 바뀌어 비교된것입니다.
일반적인 비교에서는 다른 자료형의 비교일 경우엔 형변환이 일어나게 되고
여기엔 우선순위가 있습니다.
숫자 문자 비교시엔 숫자가 우선이므로 문자가 숫자로 변형됩니다.
날짜 문자 비교시엔 날짜가 우선이므로 문자가 날짜로 변형됩니다.

by 마농 [2008.06.16 10:44:19]
제일 중요한것을 빼먹었네요.
따라서, 결론은... 다른 자료형끼리의 비교시엔 명시적으로 형변환을 시켜서 비교하는것이 좋습니다.

by 하혜진 [2008.06.16 14:26:36]
아 그런거군요 ^^ 덕분에 속시원히 궁금증을 해결했습니다.
답변 달아주신 채용근님, 마농님 감사합니다 ^^
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입