DB/Oracle

[Oracle] 숫자, 문자 데이터만 추출하기

꾹꾹이 2022. 5. 2. 15:50
728x90

숫자, 문자로만 된 데이터를 찾을 때 사용하는 방법이다.

나는 REGEXP_LIKE 함수를 사용할 것이다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
SELECT 컬럼명 FROM 테이블이름 WHERE REGEXP_LIKE(컬럼, '[^0-9]'//숫자 외의 것이 포함된 것
SELECT 컬럼명 FROM 테이블이름 WHERE NOT REGEXP_LIKE(컬럼, '[^0-9]'//숫자외의 것이 포함된 것이 아닌 것 → Only 숫자
SELECT 컬럼명 FROM 테이블이름 WHERE REGEXP_LIKE(컬럼, '[0-9]'//숫자가 포함된 것
SELECT 컬럼명 FROM 테이블이름 WHERE NOT REGEXP_LIKE(컬럼, '[0-9]'//숫자가 포함된 것이 아닌 것 → Only 문자
 
SELECT REGEXP_REPLACE(컬럼명, '[0-9]'FROM 테이블이름 //문자만 추출
SELECT REGEXP_REPLACE(컬럼명, '[^0-9]'FROM 테이블이름 //숫자만 추출
 
/*문자만 추출*/
SELECT * 
  FROM TB_1
 WHERE COL1 NOT IN (
                    SELECT COL1
                      FROM TB_1
                     WHERE REGEXP_LIKE(COL1, '^[[:digit:]]+$')
                   )
;
cs

 

 

WHERE 절에서 REGEXP_LIKE(컬럼, '^[[:digit:]]+$')를 사용하면

0부터 9까지 숫자만 들어있는 데이터를 뽑아올 수 있고

 

문자열 데이터만 뽑아오려면 NOT IN을 사용해서

숫자만 들어있는 컬럼을 제외하면 나머지는 모두 문자열이 되므로 문자열을 뽑아올 수 있다.