본문 바로가기

DB/Oracle

like in 해보자. regexp_like

mybatis를 하다가 검색을 만들어야 할 일이 생겨서 like를 쓰는데, 갑자기 여러개를 검색할 수 있게 해달라는 요구가 들어왔다. 거의 다 만들었는데... 그래서 수정을 적게 하기 위해 like를 여러개 쓰다보니 한 번에 검색할 수 있을거 같아서 검색해 보니 나와 동일한 사람이 있었다. 자세히 설명은 달아 주지 않았지만 검색으로 보니 오라클에서 정규식으로 검색하는 방법이 있었다. 사용할 일이 없어서 몰랐...


regexp_like는 정규식으로 검색하는 함수인데, like in 과 같은 검색도 가능하다.

select *

from table

where regexp_like(column, '검색어1|검색어2')


검색어를 계속 추가하면 되겠으나 자료가 많은 테이블을 조회해보지 못해서 조금 아쉽다. row가 180인 테이블에서 해보니 느리지는 않았다. 당연하려나... 


regexp_like는 정규식 검색이기 때문에 다양한 방식의 검색이 가능하다.


 [a-z] 

 소문자 알파벳 포함

 [A-Z]

 대문자 알파벳 포함

 [0-9]

 숫자 포함

 [a-z]{3}

 3글자로 연속된 소문자 알파벳 포함

 [A-Z][0-9]

 대문자, 숫자로 연속된 알파벳 포함

 [A-Z]?[0-9]

 대문자와 숫자 사이에 공백이 있을 수 있음

 [A-Z]*[0-9]

 대문자와 숫자 사이에 공백이 있을 수 있음

 ^[A-Z]

 대문자로 시작되는 문자열

 [A-Z]$

 대문자로 끝나는 문자열


뭐 자바랑 비슷하네...

활용도를 좀 더 생각해봐야겠다.


출처:

http://lee-mandu.tistory.com/48


'DB > Oracle' 카테고리의 다른 글

ojdbc와 jdk 버전  (0) 2018.04.26
모르는 테이블 조회  (0) 2016.07.20
DB에서 컬럼 순서 랜덤하게 가져오기  (0) 2015.08.05
오라클 포트 설정하기  (0) 2014.05.21
한글 - 알파벳 - 숫자 순으로 정렬  (0) 2013.07.29