프로젝트 서버 이전중에 문제가 발생 했다.
로컬호스트 에서는 문제가 없었으나 . 서버 테스트 과정에서 리터럴 형식이 잘못 되었다는 에러 메세지와 함께
제대로 검색이 되지 않았다.
(수정 : 확인결과 서버에서 받는 문자 형식의 리터럴 방식이 일관 되지 않게 된 경우 발생 함. 따라서 모든 데이터 타입 변경시
되도록이면
TO_CHAR(컬럼) ,
TO_DATE(컬럼) 이런식으로 쓸것이 아니라 반드시 그 변환 형식을 남기도록 해야 하며 예를 들자면 'YYYYMMDD'
같은 형식을 넣어야만 한다. )
TO_DATE(A.DT_FR)
이런 형식을 모두
TO_DATE(A.DT_FR,"YYYYMMDD")
로 바꾸어야만 한다.
F====> TO_DATE ?\((.+?)\)
R====> TO_DATE\($1,'YYYYMMDD')
이다.
예외사항 : TO_DATE(MIN(VAT_DT)) 과 같은 경우 제한식을 ) 으로 두었기 때문에 수작업 해야 한다. 그냥 바꾸면
TO_DATE(MIN(VAT_DT,'YYYYMMDD')) 라 바뀌게 되는데 이 것은 X
TO_DATE(MIN(VAT_DT),'YYYYMMDD') 로 바꿔야 O . 이는 대도록 정규식을 피해야 할것 같다. 정규식을 좀더 수정 하면 될것도 같긴 한데 일단. ; 걍 수업.
추가 .
TO_DATE(SYSDATE,'YYYYMMDD') 가 안먹힌다.. 지정된 월이 아니라는 에러 메세지만 배터 낸다. 좀 이해가 안되지만 어쩔수 없이 SYSDATE 에 TO_CHAR 을 적용 했더니 해결 되었다.
TO_DATE(TO_CAHR(SYSDATE,'YYYYMMDD'),'YYYYMMDD') 로 변경.
추신:
컬럼 네임에 . 들어 가있는 경우도 있기 때문에 이미 바꿔져 있는 것의 경우 ,가 포함 되어 있다. 따라서 구분을 할수 없음으로
변환을 두번 하게 되면 'YYYYMMDD' 가 추가 되게 되니. 하나씩 find 해서 replace 해야 한다.
추가정규식
검색해 보고 맞는것을 사용토록 해야함
TO_DATE\(?(.[^\,]+?)\)
TO_DATE($1,'YYYYMMDD')
1번째 --> F(find)
2번째 --> R(replace)
TO_DATE\(?(.[^\,]+?)\)
/
TO_CHARW(?(.[^\,]+?)\)
TO_CHAR($1,'YYYYMMDD')
1번째 --> F(find)
2번째 --> R(replace)
'오라클' 카테고리의 다른 글
오라클 락(사용자 확인및 해당쿼리 조회, 사용자 세션 kill) (0) | 2014.10.21 |
---|---|
한줄을 여러줄로 표현 하기 구분자값 '/' (0) | 2014.09.18 |
TOAD[토드] 단축키 정리./ 삶을.. 아니 일을 윤택 하게.. (0) | 2013.11.12 |
오라클 쿼리로 사업자번호 유효성 검사 (0) | 2013.09.25 |
컬럼 문자 인지 숫자인지 확인. (0) | 2013.09.25 |