LIKE 연산자
지정한 문자 패턴에 일치하는 문자를 검색합니다. 검색하고 싶은 문자를 정확히 모를 경우나, 값의 일부만으로 검색하고 싶을 경우에 사용합니다. 문자 패턴은 지정한 문자와 와일드카드 문자로 구성됩니다.
와일드카드
와일드카드란 임의의 문자열을 대신할 수 있는 문자를 뜻합니다. LIKE 연산자에서 자주 쓰는 와일드카드는 이하와 같습니다.
・% : 0글자 이상의 문자열을 표시, 글자수는 검색조건의 일부가 되지 않는다.
・_ : 언더바 하나 당 한 글자의 문자를 표시, 문자수 등도 검색조건의 일부가 된다.
예시1
emp테이블에서 ename 컬럼의 데이터를 LIKE문을 사용해 첫번째 문자가 S로 시작하는 데이터를 취득하는 SQL문입니다.
COLUMN empno FORMAT 99999;
COLUMN ename FORMAT A6;
COLUMN hiredate FORMAT A10;
alter session set nls_date_format = 'YYYY/MM/DD';
SELECT empno, ename, hiredate FROM emp WHERE ename LIKE 'S%';
실행 결과는 다음과 같습니다. S로 시작하는 문자열을 가진 데이터가 출력됩니다.
EMPNO ENAME HIREDATE
------ ------ ----------
7369 SMITH 1980/12/17
예시2
emp테이블에서 ename 컬럼의 데이터를 LIKE문을 사용해 마지막 문자가 D로 시작하는 데이터를 취득하는 SQL문입니다.
COLUMN empno FORMAT 99999;
COLUMN ename FORMAT A6;
COLUMN hiredate FORMAT A10;
alter session set nls_date_format = 'YYYY/MM/DD';
SELECT empno, ename, hiredate FROM emp WHERE ename LIKE '%D';
실행 결과는 다음과 같습니다. D로 끝나는 문자열을 가진 데이터가 출력됩니다.
EMPNO ENAME HIREDATE
------ ------ ----------
7521 WARD 1981/02/22
7902 FORD 1981/12/03
예시3
emp테이블에서 ename 컬럼의 데이터를 LIKE문을 사용해 가운데에 오는 문자가 ME인 데이터를 취득하는 SQL문입니다.
COLUMN empno FORMAT 99999;
COLUMN ename FORMAT A6;
COLUMN hiredate FORMAT A10;
alter session set nls_date_format = 'YYYY/MM/DD';
SELECT empno, ename, hiredate FROM emp WHERE ename LIKE '%ME%';
실행 결과는 다음과 같습니다. 가운데에 ME가 위치한 문자열을 가진 데이터가 출력됩니다.
EMPNO ENAME HIREDATE
------ ------ ----------
7900 JAMES 1981/12/03
예시4
emp테이블에서 ename 컬럼의 데이터를 LIKE문을 사용해 두 번째 문자인 ‘L’ 전후의 문자수를 지정하여 문자수가 일치하는 데이터를 취득하는 SQL문입니다.
COLUMN empno FORMAT 99999;
COLUMN ename FORMAT A6;
COLUMN hiredate FORMAT A10;
alter session set nls_date_format = 'YYYY/MM/DD';
SELECT empno, ename, hiredate FROM emp WHERE ename LIKE '_L___';
실행 결과는 다음과 같습니다. 두번째 문자가 L이며 총 다섯 글자인 문자열을 가진 데이터가 출력됩니다.
EMPNO ENAME HIREDATE
------ ------ ----------
7499 ALLEN 1981/02/20
7698 BLAKE 1981/05/01
7782 CLARK 1981/06/09
예시5
emp테이블에서 ename 컬럼의 데이터를 LIKE문을 사용해 총 문자수를 지정하여 문자수가 일치하는 데이터를 취득하는 SQL문입니다.
COLUMN empno FORMAT 99999;
COLUMN ename FORMAT A6;
COLUMN hiredate FORMAT A10;
alter session set nls_date_format = 'YYYY/MM/DD';
SELECT empno, ename, hiredate FROM emp WHERE ename LIKE '______';
실행 결과는 다음과 같습니다. 총 여섯 글자인 문자열을 가진 데이터가 출력됩니다.
EMPNO ENAME HIREDATE
------ ------ ----------
7654 MARTIN 1981/09/28
7844 TURNER 1981/09/08
7934 MILLER 1982/01/23
예시6
emp테이블에서 ename 컬럼의 데이터를 LIKE문을 사용해 마지막에서 두번째 문자가 E인 데이터를 취득하는 SQL문입니다.
COLUMN empno FORMAT 99999;
COLUMN ename FORMAT A6;
COLUMN hiredate FORMAT A10;
alter session set nls_date_format = 'YYYY/MM/DD';
SELECT empno, ename, hiredate FROM emp WHERE ename LIKE '%E_';
실행 결과는 다음과 같습니다. 마지막에서 두번째 문자가 E인 문자열을 가진 데이터가 출력됩니다.
EMPNO ENAME HIREDATE
------ ------ ----------
7499 ALLEN 1981/02/20
7566 JONES 1981/04/02
7844 TURNER 1981/09/08
7900 JAMES 1981/12/03
7934 MILLER 1982/01/23
LIKE 연산자는 문자데이터 검색만 가능하지만 검색 대상의 항목이 문자 외의 다른 데이터 형식이어도 사용할 수 있습니다. 다만 상세한 조건을 지정하기에는 비효율적일 수 있습니다.
주의1
LIKE문으로 데이터 형식이 number인 데이터를 출력하는 예시입니다.
COLUMN empno FORMAT 99999;
COLUMN ename FORMAT A6;
COLUMN hiredate FORMAT A10;
alter session set nls_date_format = 'YYYY/MM/DD';
SELECT empno, ename, hiredate FROM emp WHERE empno LIKE '76%';
empno가 76으로 시작하는 데이터가 출력됩니다.
EMPNO ENAME HIREDATE
------ ------ ----------
7654 MARTIN 1981/09/28
7698 BLAKE 1981/05/01
주의2
LIKE문으로 데이터 형식이 date인 데이터를 출력하는 예시입니다.
COLUMN empno FORMAT 99999;
COLUMN ename FORMAT A6;
COLUMN hiredate FORMAT A10;
alter session set nls_date_format = 'YYYY/MM/DD';
SELECT empno, ename, hiredate FROM emp WHERE hiredate LIKE '1982%';
hiredate가 1982로 시작하는 데이터가 출력됩니다.
EMPNO ENAME HIREDATE
------ ------ ----------
7934 MILLER 1982/01/23
와일드카드로 쓰이는 문자가 포함된 데이터를 검색할 때