database/oracle

특수문자보정 | 문자형 날짜 컬럼의 문자 추출

아이짱구 2009. 9. 22. 18:29

날짜가 들어가야 할 컬럼(DATE TYPE이 아닌 VARCHAR2일 경우)에 문자가 들어가 있을 경우 SQL로 추출하는 방법

1. 달력과 같은 날짜만 들어 있는 달력 테이블을 생성 (1890년 ~ 2050년 까지이면 모두 포함 할 수 있을것 같음.)
     
CREATE
 TABLE TEST_YMD AS
SELECT TO_CHAR(TO_DATE('18900101','YYYYMMDD') + ROWNUM - 1,'YYYYMMDD') YMD
  FROM SUBSCRIBER        /** 58,804 건 이상의 테이블이면 됨. **/
 WHERE ROWNUM <= 58804 ; /** 1890년 ~ 2050 까지의 일자수 **/
  
2. 달력테이블과 OUTER JOIN을 이용하여 추출
      
SELECT /* 달력 테이블은 모든 일자가 존재하므로 일자에 벗어난 데이터만 추출 */
       A.*
  FROM 대상테이블 A,
       TEST_YMD   B
 WHERE A.대상컬럼 = B.YMD(+)
   AND B.YMD IS NULL;