반응형
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';
'Oracle DBA > SQL' 카테고리의 다른 글
20230622 (2) SQL 014 : 비교 연산자 5 (IN) (0) | 2023.06.22 |
---|---|
20230622 (1) SQL 013 : 비교 연산자 4 (IS NULL) (0) | 2023.06.22 |
20230621 (6) SQL 011 : 비교 연산자 2 (BETWEEN AND) (0) | 2023.06.21 |
20230621 (5) SQL 010 : 비교 연산자 (0) | 2023.06.21 |
20230621 (4) SQL 009 : 산술 연산자 (0) | 2023.06.21 |