Oracle - LIKE 연산자

문자열을 검색할 때 사용하는 키워드이다. WHERE 조건절에 함께 사용하는 키워드이다.

1
2
3
SELECT ename, empno
FROM emp
WHERE ename LIKE 'FORD';

LIKE 키워드에 포함하는 문자열을 가진 모든 문자열을 조회하는 방법이 있다. 두번째 글자가 A인 사원의 이름을 emp 테이블에서 조회하는 쿼리이다.

1
2
3
SELECT ename, empno
FROM emp
WHERE ename LIKE '_A%'

위 쿼리에서 LIKE 조건절만 해석해보면, _는 하나의 글자를 의미한다. 반면 %는 복수의 글자수를 이야기한다. 따라서 _를 하나만 입력했다면, 앞에 한 글자는 무슨 글자인지 모르겠으나 두번째 글자가 A가 따라오며 뒤의 글자는 어떤 글자든지(글자가 없더라도) 조회하도록 하는 쿼리이다. 그 결과로 ename의 컬럼중 두번째 글자가 A인 ename의 데이터들이 조회된 것이다.

쿼리성능을 생각하지 않는다면, %를 붙여서 사용하는게 더 많은 글자를 조회할 수 있기에 _ 연산자보다는 % 연산자만을 사용하는게 좋은 선택일지도 모르겠으나 _ 연산자가 필요한 경우도 있다.

예를들면, 문자열 속 문자로 조회하는게 아니라 문자열의 수를 통해 조회하고자 할 때이다.

1
이름이 4글자인 사원의 이름(ename)과 사원번호(empno)를 조회하시오.
1
2
3
SELECT ename, empno
FROM emp
WHERE ename LIKE '____';

_ 는 한 글자를 의미하므로 4글자로 이루어진 ename을 조회하기 위해서는 _을 4개를 입력해서 조회할 수 있다.


LIKE 연산자는 문자열 뿐만 숫자 조회에서도 사용할 수있다.

1
2
3
SELECT empno, ename
FROM emp
WHERE empno LIKE '%00%';