[oracle]오라클 정규식 REGEXP_LIKE :: 개발/일상_Mr.lee

[oracle]오라클 정규식 REGEXP_LIKE

Posted by Mr.mandu.
2016. 5. 7. 09:00 개발/DB


REGEXP_LIKE 함수 실습


현재 테이블의 전체 데이터


SELECT * FROM TEST





특정 문자나 숫자를 포함하는 결과 출력하기


SELECT * FROM TEST WHERE regexp_like(text, '[a-z][0-9]'); 

[a-z], [0-9]는 소문자 전체와 0부터9까지의 숫자를 나타냅니다.


SELECT * FROM TEST WHERE regexp_like(text, '[a-z] [0-9]'); 

[a-z]와[0-9]사이에 공백이 있는 것이 보이시죠? 이렇게 공백도 구분값으로 사용할 수 있습니다.



공백이 여러개일경우찾기


SELECT * FROM TEST WHERE regexp_like(text, '[a-z]?[0-9]');

SELECT * FROM TEST WHERE regexp_like(text, '[a-z]*[0-9]');

[a-z]?[0-9]와 [a-z]*[0-9] 이 뜻은 공백이 여러개 포함한다는 뜻 입니다.



SELECT * FROM TEST WHERE regexp_like(text, '*[0-9]');

숫자를포함한 모든 문자를 select 합니다.


SELECT * FROM TEST WHERE regexp_like(text, '*[a-z]');

소문자 영어 를 포함한 모든 문자를 select 합니다.



연속적인 글자 수 찾기


SELECT * FROM TEST WHERE regexp_like(text, '[A-Z]{3}');

대문자 영어가 연속으로 3자리 있는 행을 출력합니다.


SELECT * FROM TEST WHERE regexp_like(text, '[0-9]{3}'); 

숫자가 연속으로 3자리 있는 행을 출력합니다.





영어 대문자, 숫자 대분자 모두 3개 이상


SELECT * FROM TEST WHERE regexp_like(text, '[A-Z][0-9]{3}');



숫자로 시작되는 행


SELECT * FROM TEST WHERE regexp_like(text, '^[0-9]');



소문자나 숫자로 시작하는 행


SELECT * FROM TEST WHERE regexp_like(text, '^[a-z]|^[0-9]'); 



소문자로끝나는행


SELECT * FROM TEST WHERE regexp_like(text, '[a-z]$');



숫자로시작하지 않는 행


SELECT * FROM TEST WHERE regexp_like(text, '^[^0-9]');



‘A’나 1을 포함하고 있는행


SELECT * FROM TEST WHERE regexp_like(text, 'A|1');



포함하지 않는 행을 할 시에는

SELECT * FROM TEST WHERE NOT regexp_like(text, 'A|1’);   not을 붙인다



'?' 문자가 들어가는행


SELECT * FROM TEST WHERE regexp_like(text, '\?');