본문 바로가기
SQL/Oracle

오라클 컬럼에서 숫자 문자 데이터만 추출방법 정리

by wakestand 2020. 12. 9.
반응형

오라클에서 REGEXP_LIKE를 이용해서

테이블 컬럼 내의 숫자, 문자 데이터만 검색할 수 있는데

프로그램으로 INSERT를 하지 않고 직접 테이블에 INSERT를 해서

규칙에 어긋난 값들을 찾을 때 주로 사용된다

 

WHERE 절에서 REGEXP_LIKE(컬럼, '^[[:digit:]]+$')

를 사용하면 0부터 9까지

숫자만 들어있는 데이터를 뽑아올 수 있고

 

문자열 데이터만 뽑아오려면

NOT IN을 사용해서 숫자만 들어있는 컬럼을 제외하면

나머지는 모두 문자열이 되므로 문자열을 뽑아올 수 있다

 

마지막으로 예제에 사용한 쿼리는 아래와 같다

 

WITH TBL AS (
  SELECT 'AAAAAA' AS COL1 FROM DUAL
  UNION ALL SELECT 'AAA111' AS COL1 FROM DUAL
  UNION ALL SELECT '111111' AS COL1 FROM DUAL
  UNION ALL SELECT '한글한글' AS COL1 FROM DUAL
  UNION ALL SELECT '한글111' AS COL1 FROM DUAL
)

-- 숫자만
SELECT * 
  FROM TBL 
 WHERE REGEXP_LIKE(COL1, '^[[:digit:]]+$')
;

-- 문자만
SELECT * 
  FROM TBL 
 WHERE COL1 NOT IN (
                    SELECT COL1
                      FROM TBL
                     WHERE REGEXP_LIKE(COL1, '^[[:digit:]]+$')
                   )
;
반응형

댓글