티스토리 뷰

숫자 혹은 문자로만 된 데이터를 찾아야 하는 일이 생겨 기록해봄

 

REGEXP_LIKE와 REGEXP_REPLACE 함수를 써서 정규식을 활용한 판별을 진행

(REGEXP는 다양한 종류와 옵션이 있지만 다루지 않음)

 


1. 정규식

  • [0-9] 숫자, [^0-9] 숫자 외의 것
  • 그 외의 다양한 정규표현식이 있으니 구글링 ㄱ

 

2. WHERE절에 쓰는 REGEXP_LIKE을 이용하여 데이터 조회하기

  • LIKE문 처럼 해당 정규식에 해당하는 데이터가 한자라도 포함되어 있으면 조회한다.
  • NOT을 사용하여 숫자를 포함한 것들을 제외하면 숫자가 하나도 포함되지 않은 데이터를 조회한다.
  • 반대로 NOT을 사용하여 숫자가 아닌 것을 포함한 모든 것을 제외하여 숫자로만 이루어진 데이터를 조회한다.
WHERE REGEXP_LIKE(컬럼, '[0-9]') //데이터에 숫자가 하나라도 포함되면 조회
WHERE REGEXP_LIKE(컬럼, '[^0-9]') //데이터에 숫자가 아닌 것이 하나라도 포함되면 조회

WHERE NOT REGEXP_LIKE(컬럼, '[0-9]') //데이터에 숫자가 하나라도 포함되면 제외: 숫자 없는 데이터
WHERE NOT REGEXP_LIKE(컬럼, '[^0-9]') //데이터에 숫자가 아닌 것이 하나라도 포함되면 제외: 숫자

 

 

3. SELECT문 컬럼절에 REGEXP_REPLACE를 이용하여 데이터 조회하기

  • 해당 정규식에 해당하는 데이터를 제외하고 데이터를 조회한다.
  • [0-9]를 넣으면 데이터에서 숫자를 지우고 보여준다.
  • [^0-9]를 넣으면 반대로 데이터 속 숫자만 보여준다.
SELECT REGEXP_REPLACE(컬럼, '[0-9]') //문자만 추출
SELECT REGEXP_REPLACE(컬럼, '[^0-9]') //숫자만 추출

 

4. 끝

  • 숫자+문자로 된 데이터가 들어있는 컬럼을 '컬럼', 테이블을 '테이블'로 표기
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 테이블 //숫자만 추출

 

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함