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;