본문 바로가기
초보자를 위한 SQL 200제/이론 & 예제

012 비교 연산자 배우기 (LIKE)

by Hwanii_ 2023. 7. 12.
728x90

문자 패턴이 일치하는 행을 검색 하는 방법.

 

LIKE 연산자를 사용해서, 문자가 일치하는 데이터를 검색 할 수 있다.

 

1.

이름의 첫 글자가 S로 시작하는 사원들의 이름과 월급 출력 하기.

 

SELECT ename, sal
FROM emp
WHERE ename LIKE 'S%';

ENAME             SAL
---------- ----------
SMITH             800
SCOTT            3000

 

% 는 와일드 카드 (Wild Card) 라고 한다.

 

와일드 카드

이 자리에 어떠한 철자가 오더라도 상관이 없고,

철자의 개수가 몇개가 되더라도 상관이 없다는 의미이다.

 

참고로,

%가 특수문자 %로 사용이 되는 경우는 이퀄 (=) 연산자와 사용 되는 경우 이고,

 

와일드 카드 %로 사용이 되는 경우는, LIKE 연산자와 사용 되는 경우 이다.

 

WHERE ename LIKE 'S%';

 

'S%' 는 첫번째 글자가 S 이고,

두번째 글자 부터는

어떠한 글자가 오더라도 상관 없고,

글자가 몇개가 되더라도 상관이 없다는 의미 이다.

 

즉, ename 열의 행 데이터 중에서 첫글자가 S이면 전부 다 긁어 온다는 의미 이다.

 

 

 

2.

LIKE 연산자와 같이 쓰이는 기호는 와일드 카드 ( % ) 와 언더바 ( _ ) 가 있다.

 

언더바 ( _ )

어떠한 철자가 와도 상관없으나, 자리수는 한 자리여야 된다는 의미 이다.

 

기호 설명
% 0개 이상의 임의 문자와 일치
_ 하나의 문자와 일치

 

 

 

3.

이름의 두 번째 철자가 M인 사원의 이름을 출력 하기.

 

SELECT ename
FROM emp
WHERE ename LIKE '_M%';

ENAME     
----------
SMITH

 

왜 언더바를 사용 했냐면,

M 이라는 단어 앞에 붙은 어떠한 글자가 한자리 이고 싶어서 그런것 이다.

 

왜 ?

 

이름의 두 번째 철자가 M인 사원의 이름을 출력 하려고 했으니까 ~

 

 

 

4.

이름의 끝 글자가 T로 끝나는 사원들의 이름을 출력 하기.

 

SELECT ename
FROM emp
WHERE ename LIKE '%T';

ENAME     
----------
SCOTT

 

T 앞에 와일드 카드 (%) 를 사용함으로써,

 

T 앞에 오는 모든 단어 OK,

T 앞에 오는 단어 개수 상관 없음 을 의미 한다.

 

즉, T가 맨 끝에 있는 이름을 출력 하고 싶으면 위와 같이 작성 하면 된다.

 

 

 

5.

만약에 단순히 이름에 A가 들어가는 사원을 찾으려고 했으면 어떻게 해야 할까 ?

 

3번 에서 사용한것은 'M%'; 였는데,

이것은 첫번째 글자가 M으로 시작하는, 모든 데이터를 긁어 온다는 의미였다.

 

이름에 A가 들어가는 모든것을 찾고 싶을 때는 아래와 같이 작성 하면 된다.

 

'%A%';

 

와일드 카드를 알파벳 A 기준으로 양쪽에 작성 하게 되면,

단어에 A가 포함된 것들을 모두 검색 하게 된다.

 

SELECT ename
FROM emp
WHERE ename LIKE '%A%';

ENAME     
----------
BLAKE
CLARK
MARTIN
ALLEN
JAMES
WARD
ADAMS

7개 행이 선택되었습니다.

 

 

반응형