거꾸로 토마토

오라클 문자컬럼에서 숫자타입이 아닌 문자가 존재하는 컬럼 구하기 본문

Programming/Database

오라클 문자컬럼에서 숫자타입이 아닌 문자가 존재하는 컬럼 구하기

otamot 2010. 10. 14. 14:00
  프로젝트 진행 중에 VARCHAR2 컬럼에 숫자값을 입력하는 경우가 존재하는데 숫자가 아닌 문자가 들어간 DATA를 걸러내야 할 때가 있다. 다음과 같이 하면 양수의 숫자만 들어간 컬럼만 찾아낼 수 있다. 
  오라클 함수중에 REGEXP_INSTR(...)이 있는데 정규식을 이용해서 해당 컬럼의 원하는 정규식 pattern의 자리수를 얻어오는 것이다.

SELECT COL FROM (
    SELECT '12.0' AS COL FROM DUAL
    UNION ALL SELECT '52/0' FROM DUAL
    UNION ALL SELECT '52U0' FROM DUAL
    UNION ALL SELECT '%2U0' FROM DUAL
) T 
WHERE  REGEXP_INSTR(T.COL , '[^{.1234567890}]') <= 0

수행 결과는 다음과 같다.

COL
----
12.0

0 Comments
댓글쓰기 폼