본문 바로가기
본업/SQL

[오라클] 특수문자 포함 like 검색 escape, regexp_like

by 퐁닥 2024. 1. 23.

 

 

 

Q) 데이터 중 언더바( _ ) 를 포함하고 있는 데이터를 찾고 싶다. 

 

먼저, like 검색 했을 때 언더바는 해당위치의 글자를 의미한다. 

select * from tbl where title  like  '_'    -- 한 글자 찾기

select * from tbl where title  like  'A_'  -- A로 시작하는 두 글자 찾기

select * from tbl where title  like  'A_C'  -- A로 시작하고 C로 끝나는 세 글자 찾기

 

 

데이터에 특수기호가 들어가있을 때, 특수기호를 검색하는 방법을 알아보자

 

select * from tbl
TITLE
A
B_
C_C_
_D
CBBC_

 

▶ select * from tbl where title like '_' 

A

 

 

escape

 

  select * from tbl where title like '@_%'  escape '@';

 

@는 잘 사용하지 않는 문자를 사용한 것으로 @대신 #이나 $등을 사용해도 된다. 

예) select * from tbl where title like '#_%'  escape '#';

B_
C_C_
_D
CBBC_

 

like 검색은 기존과 동일하게 하고 특수문자 앞에 escape 할 문자만 지정해주면 된다. 

% 검색도 동일하게 할 수 있다. (select * from tbl where title like '%@%%' escape '@')

 

 

regexp_like(컬럼명, 조건)

 

select * from tbl where regexp_like('title', '\_');

B_
C_C_
_D
CBBC_

 

regexp_like를 잘 활용하면 검색할 때 더 편한 것 같다. 

 

 

활용예로는 

regexp_like(컬럼명, '^B|^C')       -- B로 시작하거나 C로 시작하는 문자 찾기

regexp_like(컬럼명, 'B$|C$')       -- B로 끝나거나 C로 끝나는 문자 찾기

regexp_like(컬럼명, 'B$|C$', 'i')   -- B로 끝나거나 C로 끝나는 문자 찾기, i는 대소문자 구분 없앰

regexp_like(컬럼명, '[[:digit:]]')     --특수문자 포함 된 컬럼찾기