본문 바로가기
괴발개발/DB

LIKE, ESCAPE

by 맛길만걷자 2024. 5. 28.
728x90
반응형

/* LIKE
- 비교하려는 값이 특정한 패턴을 만족 시키면 조회하는 연산자

[작성법]
WHERE 컬럼명 LIKE '패턴'

- LIKE 패턴 (와일드카드) : '%(포함)', '_' (글자수)

'%' 예시
1) 'A%' : 문자열이 A로 시작하는 모든 컬럼 값
2) '%A' : 문자열이 A로 끝나는 모든 컬럼 값
3) '%A%' : 문자열이 A가 포함되어있는 모든 컬럼 값

'_' 예시
1) 'A_' : A뒤에 아무거나 한 글자
2) '____A' : A 앞에 아무거나 세글자(4글자 문자열이면서 A로 끝나야함)

*/

-- EMPLOYEE 테이블에서 성이 '전'씨인 사원의 사번, 이름 조회
SELECT EMP_ID, EMP_NAME
FROM EMPLOYEE
WHERE EMP_NAME LIKE '전%';

-- EMPLOYEE 테이블에서 이름에 '하'가 포함된 사원의 사번, 이름 조회
SELECT EMP_ID, EMP_NAME
FROM EMPLOYEE 
WHERE EMP_NAME LIKE '%하%';

-- EMPLOYEE 테이블에서 
-- 전화번호가 010으로 시작하는 사원의 사번, 이름, 전화번호 조회'
SELECT EMP_ID, EMP_NAME, PHONE
FROM EMPLOYEE
WHERE PHONE LIKE '010%';

SELECT EMP_ID, EMP_NAME, PHONE
FROM EMPLOYEE
WHERE PHONE LIKE '010________';

-- 010으로 시작하지 "않는'사람들 조회
--> NOT LIKE(LIKE 결과 부정)

SELECT * FROM EMPLOYEE
WHERE PHONE NOT LIKE '010%';

-- EMPLOYEE 테이블에서
-- 이메일에 _앞글자가 세글자인 사원의 사번, 이름, 이메일 조회

SELECT EMP_ID, EMP_NAME, EMAIL
FROM EMPLOYEE
WHERE EMAIL LIKE '___%';

-- 문제점 : 와일드 카드 문자(_)와 패턴에 사용된 일반 문자(_)의 모양이 같아서 문제 발생
-- 해결 방법 : ESCAPE OPTION을 이용하여 일반문자로 처리할 '_', '%' 앞에 아무 특수문자나 붙임

SELECT EMP_ID, EMP_NAME, EMAIL
FROM EMPLOYEE
WHERE EMAIL LIKE '___$_%' ESCAPE '$';

728x90
반응형

'괴발개발 > DB' 카테고리의 다른 글

IN 연산자, 연결연산자(||)  (0) 2024.05.29
SQL 연산자 우선순위  (0) 2024.05.28
BETWEEN A AND B  (0) 2024.05.28
함수  (0) 2024.05.09
SELECT  (0) 2024.05.08