본문 바로가기
IT 프로그래밍 관련/MySQL

MySQL 문자열에 포함된 단어 검색 like

by 지나는행인 2021. 3. 16.
728x90

SQL에도 python 의 str.contains 와 비슷한 기능을 가진,

 

like가 존재한다.  like는 문자열들 안에서 내가 찾고 싶은 단어가 포함된 문자열을 찾는 것이다.

 

select *

from books ;    의 화면이다.

 

author_fname 에 'da'가 들어있는 문자열을 찾아 책제목과 작가 이름 조회해 보겠다.

 

like를 사용할 때는 아래와 같이 입력한다.

 

 

1
2
3
select title, author_fname, author_lname
from books
where author_fname like 'da'
cs

위 코드는 author_fname 에 'da' 가 들어있는 문자열을 찾아 title, author_fname, author_lname 컬럼을 보여라.

이다.

 

author_fname 에 'da'가 들어가 있는 데이터는 많지만, 위의 코드를 실행시켜면, 아무것도 조회가 되지 않는다.

 

이유는 like 'da' 라고 입력시에는 author_fname의 데이터가 'da'  인 것만 찾기 때문이다.

 

그렇다면 'da' 를 포함한 데이터를 찾으려면 어떻게 할까.

 

아래에서 확인하겠다.

 

1
2
3
select title, author_fname, author_lname
from books
where author_fname like '%da%';
cs

원래 코드에서   da 양 옆에 % 이 들어갔다.

 

이것의 뜻을 하나씩 보면,

 

%da       da 왼쪽으로 글자가 있어도, 없어도 된다.  (끝이 da로 끝나는 da가 포함된 문자열)

da%       da 오른쪽으로 글자가 있어도, 없어도 된다. (da로 시작하는 da가 포함된 문자열)

 

이러한 뜻이다 .결국 %da%  이렇게 쓰게 되면    da 앞으로 글자가 있어도 없어도 상관 없다는 뜻으로,

 

da가 포함되어 있는 데이터를 찾아 오라는 뜻이다.

 

 

위의 %위치를 참고하여 한 쪽 방향으로만 da가 포함된 문자열을 찾을수도 있다. 

 

 

like 는 숫자형 데이터의 자릿수를 설정하여 가져올 수 있다.

 

이때는 언더스코어( _ ) 를 사용한다. 

 

위는 stock_quantity 의 데이터가 두자리인 데이터의 title, stock_quantity 컬럼을 조회한것이다.

 

언더스코어의 갯수에 따라 자릿수를 설정한다.

 

_   :  한자리

__  : 두자리

___ : 세자리  등..

 

 

그리고 _  ,  % 를 포함한 문자열을 찾으려면, 앞에 이스케이프문자인 \을 입력한다.

 

select title 
from books
where title like '%\%%'                   책 제목에 %가 포함된 문자열 찾기

 

select title
from books
where title like '%\_%';                   책 제목에 _ 가 포함된 문자열 찾기

 

 

'IT 프로그래밍 관련 > MySQL' 카테고리의 다른 글

MySQL between , not between  (0) 2021.03.17
MySQL 시간관련데이터 처리  (0) 2021.03.16
MySQL limit 와 offset  (0) 2021.03.16
MySQL 테이블 데이터 정렬하기  (0) 2021.03.16
MySQL 문자열 함수들  (0) 2021.03.16

댓글