Oracle DBA/SQL

20230621 (7) SQL 012 : 비교 연산자 3 (LIKE)

Nuez 2023. 6. 21. 17:20
반응형

LIKE 

문자열의 중간 데이터를 검색할 때 유용한 연산자 

특정 단어를 포함하고 있는 데이터를 찾을 때 유용

 

구조

SELECT 컬럼명

FROM 테이블명

WHERE 검색대상컬럼 LIKE '조건+기호'

 

기호 

1. % : %자리에 뭐가 오든, 철자의 갯수가 몇개가 되든 조건만 맞으면 관계 없이 조회해달라는 것.  

2. _ : _ 자리에 뭐가 와도 상관없는데 자리수는 1개여야 한다는 것.


문제 38. 사원 테이블에서 이름의 철자가 S로 시작하는 사원들의 이름과 월급을 출력하시오.

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

 

주의할 점. LIKE와 %가 함께 쓰일 때만 작동.

아래와 같이 기입하면 말 그대로 이름이 'S%'인 사람을 조회해 반환시도함. 

문법 상으로는 맞기 때문에 실행은 됨. 다만 결과가 없음. 

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


문제39. 이름의 끝 글자가 T로 끝나는 사원들의 이름과 월급을 출력하시오. 

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


문제 42. 이름의 두번째 철자가 M인 사원들의 이름을 출력하시오. 

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

언더바(_)의 기능 : 이 자리에 어떠한 철자가 와도 관계 없으나 자리수는 한 자리여야 한다고 한정시킴.

M을 _ 대신 %로 감싸주게 되면 M을 포함하는 모든 이름이 다 출력됨.


문제 47. 아래의 데이터를 입력하고 이름의 두번째 철자가 %인 사원의 이름을 출력하시오.

입력 데이터 :

INSERT INTO emp(empno, ename, sal) 
    VALUES(1234, 'A%B', 3000);

SELECT ename
FROM emp
WHERE ename LIKE '_\%%' ESCAPE '\';

ESCAPE 옆에 규정된 문자가 ESCAPE문자로 지정됨. 

즉 LIKE 다음의 조회 조건중에  ESCAPE문자 다음에 나오는 문자는 와일드카드가 아니라 말그대로 문자로 인식해달라는 것.

MySQL에서는 역슬래시(\)로 작성하면 syntax error를 반환함. 

m과 같은 알파벳이나 다른 문자(ex. @, |)를 사용하면 이상 없음.

SELECT ename
FROM emp
WHERE ename LIKE '_m%%' ESCAPE 'm';