본문 바로가기

데이터베이스/SQL & PL/SQL

[SQL] WHERE 절을 활용하자, LIKE!

쿼리를 이용해서 데이터를 조회 할 때 어떤 특정 패턴을 이용한 조회가 가능합니다.
가령, 회사의 사원들 중에 이름이 'J' 로 시작하는 하는 사원을 조회하고 싶다라던지
사원들의 전화번호가 001로 시작하는 사원들을 조회하고 싶을 때를 말하는 겁니다.

즉 데이터의 일부나 그런 조건을 이용할 수 있도록 가능하게 하는것이
LIKE 라는 키워드 입니다.

다음과 같이 쓸 수 있겠습니다.
WHERE 컬럼명 LIKE 조건;

위의 '조건'에 해당하는 부분에 대해서 짚고 넘어갈게요.
J로 시작하는 사원의 이름을 조회하고 싶다면 다음과 같이 하면 됩니다.

'J%'

여기서 '%'의 의미는 그 자리가 위치하는 곳에서 다른 문자나 숫자따위가 0개 또는 하나 이상임을 표시합니다.
즉  이렇게 된다면 이름 자체가 J 또는 James 나 Jake 라는 이름을 찾을 수 있겠군요.

그리고 '_' 를 쓸수 있는데요. 해당 위치에 어떤 문자나 숫자따위가 꼭 위치해야 함을 의미합니다.
'%'가 0개 이상이라면 '_'는 꼭! 그자리에 하나 라는 의미입니다.

자 두개를 조합해서 한번 조건을 부여하도록 해볼까요?
여러 상황을 생각나는데로 해봅시다.

1. 'mes' 으로 끝나는 이름을 검색 - '%mes'  결과로서 jamesjimes
2. 두번째 글자가 h로 시작되는 이름을 검색 - '_h%' 결과로서 shrek 이나 philipe
3. 이름이 다섯글자 이상 검색 - '_____%' 결과로서 shrek 이나 philipe, james,jimes
4. 이름이 끝나기 전에 맨 끝에 앞의 글자가 k로 끝나는 이름 검색 - '%k_' 결과로서 jacky polsky

한가지 실 예제를 보면 이렇습니다.
SELECT department_id, first_name, salary
FROM hr.employees
WHERE first_name LIKE '%s_';


끝에서 2번째 글자가 s인 사원들만 조회 되었군요.

다른 것들과 마찬가지로 LIKE 도 NOT을 이용한 방법이 가능합니다.  제시된 조건이 아닌것들만 조회 되겠죠?

좀 다양한 예시가 생각이 안나지만 LIKE 는 이정도로도 충분할 듯 합니다.
LIKE 에 대해 이해 하셨죠? 이만 글 줄입니다.


도움 되셨다면 댓글 부탁드립니다.