
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:]]') --특수문자 포함 된 컬럼찾기