여니의 프로그래밍 study/MySQL

[SQL문 #04] SQL Like를 이용해서 원하는 데이터를 검색하는 방법

여니's 2020. 5. 27. 10:00

안녕하세요

공대생 블로거 여니입니다.

저번 시간에는 where쿼리를 이용해 원하는 데이터를 검색하는 방법에 대해서 살펴보았는데요!

이번 포스팅에서는 Like 키워드를 이용해서 검색하는 방법에 대해 알려드리려고 해요!

Like 키워드 사용을 언제 하는 것인지에 대해 먼저 알아야겠죠?

Like 키워드는 데이터를 정확하게 알고 있지 못한 상태에서 드문드문 알고 있는 상태에서 사용할 때 쓰는 키워드입니다.

예를 들자면,

만약에 제가 방탄소년단이라는 그룹의 이름이 방탄까지밖에 기억을 못 한다고 생각해봅시다!

테이블에는 방탄소년단이라는 그룹이름이 들어가 있는데 방탄이라는 그룹을 찾아 달라고 하면,, 당연히 못 찾죠!

그럴 때 쓰는 게 바로 Like입니다

 

Like는 데이터를 부분적으로만 알고 있어도 검색이 가능해요

방탄이라고 검색을 해도 방탄소년단을 찾아준다는 말이죠!

 

그러면 일단 방탄이라고 검색을 해볼게요

select * from 개인정보 where 이름 like '방탄%';

오! 바로 찾아주네요!

방탄뒤에 이름이 생각이 안 나니까 '방탄%'라고 입력을 해주면 방탄이라고 시작하는 단어를 몽땅 찾아주는 거예요

 

이번에는 방탄 말고 소년단만 생각난 다치고 소년단 가지고 검색을 해볼까요?

select * from 개인정보 where 이름 like '% 소년단';

우왕! 역시 똑똑한 컴퓨터..

잘 찾아주네요 ㅎㅎ

이제 이름이 2글자였는데,, 정확하게 이름이 기억이 안 날 때는 어떻게 검색을 해야 할까요?

select * from 개인정보 where 이름 like '__';

_라는 기호를 사용하면 됩니다.

즉 %를 사용하면 데이터 길이는 상관없고, _라는 기호를 사용하면 데이터 길이를 정확하게 입력을 해줘야 한다는 거!

 

음음,, 이번엔 어떤 걸 입력해볼까요?

이름이 김으로 시작했던 것 같은데 3글자였던 거 같은데.. 이럴 때도 검색을 할 수 있을까요?

당연히 됩니다.

% 랑 _를 혼용해서 써주시면 되겠죠?

select * from 개인정보 where 이름 like '김__';

이런 식으로!!

앗 이번에는 이름 중간에 태를 포함한 이름을 검색해볼까요?

2가지 방법이 있을 것 같아요.

첫 번째로는 select * from 개인정보 where 이름 like '_태_';

두 번째로는 select * from 개인정보 where 이름 like '% 태%';

이런 식으로 사용을 해주면 되는데,, 어렵지 않죠!?

그런데 첫 번째랑 두번째 방법은 약간의 차이가 있어요

다들 눈치채셨나요?

첫번째 방법에서는 태라는 이름이 중간에 들어가 있는 총 3자의 글자를 찾는 것이고,

두 번째 방법에서는 태라는 이름이 중간에 들어가 있지만 글자 수는 제한이 없어요!

이번 예시에서는 똑같은 결괏값이 나왔지만, 

주어진 데이터에 따라서 값이 달라질 수 있다는 점!

오늘은 여기서 포스팅을 마치도록 할게요...

다음 포스팅에서 또 만나자고요!