문자 패턴이 일치하는 행을 검색 하는 방법.
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개 행이 선택되었습니다.
'초보자를 위한 SQL 200제 > 이론 & 예제' 카테고리의 다른 글
014 비교 연산자 배우기 (IN) (0) | 2023.07.12 |
---|---|
013 비교 연산자 배우기 (IS NULL) (0) | 2023.07.12 |
011 비교 연산자 배우기 (BETWEEN AND) (0) | 2023.07.12 |
010 비교 연산자 배우기 1 (>, <, >=, <=, =, !=, <>, ^=) (0) | 2023.07.09 |
009 산술 연산자 배우기 (*, /, +, -) (0) | 2023.07.09 |