< LIKE >
비교하고자 하는 컬럼값이 내가 제시한 특정 패턴에 만족될 경우 조회
[표현법]
비교대상컬럼 LIKE '특정패턴'
- 특정패턴 제시시 '%', '_'를 와일드 카드로 사용할 수 있음
>> '%' : 0글자 이상
EX) 비교대상칼럼 LIKE '문자%' => 비교대상의 컬럼값이 문자로 "시작" 되는 걸 조회
비교대상컬럼 LIKE "%문자" => 비교대상의 컬럼값이 문자로 "끝" 나는 걸 조회
비교대상컬럼 LIKE "%문자%" => 비교대상의 컬럼값에 문자가 "포함" 되는 걸 조회 (키워드 검색)
>> '_' : 1글자 이상
EX) 비교대상컬럼 LIKE '_문자' => 비교대상의 컬럼값에 문자앞에 무조건 한글자만 올 경우 조회
비교대상컬럼 LIKE '__문자' => 비교대상의 컬럼값에 문자앞에 무조건 두글자가 올 경우 조회;
비교대상컬럼 LIKE '_문자_' => 비교대상의 컬럼값에 문자앞과 문자 뒤에 무조건 한글짜씩 올 경우 조회;
사원들 중에 성이 전씨인 사원들의 사원명, 급여, 입사일 조회
SELECT EMP_NAME, SALARY, HIRE_DATE
FROM EMPLOYEE
WHERE EMP_NAME LIKE '전%';
이름이 하로 끝나는 사원들의 사원명, 주민번호, 전화번호 조회
SELECT EMP_NAME, EMP_NO, PHONE
FROM EMPLOYEE
WHERE EMP_NAME LIKE '%하';
이름중에 하가 포함된 사원들의 사원명, 주민번호, 전화번호 조회
SELECT EMP_NAME, EMP_NO, PHONE
FROM EMPLOYEE
WHERE EMP_NAME LIKE '%하%';
이름의 가운데 글자가 하 인 사원들의 사원명, 전화번호 조회
SELECT EMP_NAME, PHONE
FROM EMPLOYEE
WHERE EMP_NAME LIKE '_하_';
전화번호 3번째 자리가 1인 사원들의 사번, 사원명, 전번, 이메일 조회
와일드카드 : _(1글자), %(0글자 이상)
SELECT EMP_ID, EMP_NAME, PHONE, EMAIL
FROM EMPLOYEE
WHERE PHONE LIKE '__1%';
* 특이케이스
이메일 중 _ 기준으로 앞글자가 3글자인 사원들의 사번, 이름, 이메일 조회
ex) sim_bs@kh.or.kr, sum_di@kh.or.kr
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 '$';
위의 사원들이 아닌 그 외의 사원들 조회
SELECT EMP_ID, EMP_NAME, EMAIL
FROM EMPLOYEE
--WHERE EMAIL NOT LIKE '___$_%' ESCAPE '$';
WHERE NOT EMAIL LIKE '___$_%' ESCAPE '$';
실습문제
1. EMPLOYEE에서 이름이 '연'으로 끝나는 사원들의 사원명, 입사일 조회
SELECT EMP_NAME, HIRE_DATE
FROM EMPLOYEE
WHERE EMP_NAME LIKE '%연';
2. EMPLOYEE에서 전화번호 처음 3자리가 010이 아닌 사원들의 사원명, 전화번호 조회
SELECT EMP_NAME, PHONE
FROM EMPLOYEE
WHERE PHONE NOT LIKE '010%';
3. EMPLOYEE에서 이름에 '하'가 포함되어 있고 급여가 240만원 이상인 사원들의 사원명, 급여 조회
SELECT EMP_NAME, SALARY
FROM EMPLOYEE
WHERE EMP_NAME LIKE '%하%' AND SALARY >= 2400000;
4. DEPARTMENT 에서 해외영업부인 부서들의 코드, 부서명 조회
SELECT DEPT_ID, DEPT_TITLE
FROM DEPARTMENT
WHERE DEPT_TITLE LIKE '해외영업%';