본문 바로가기

BackEnd/DataBase - Oracle

[Oracle] 조건연산자 (BETWEEN, IN, LIKE, IS)

조건연산자는 WHERE절 처럼 조건절인 곳에서만 사용이 가능하다

 

BETWEEN

조건의 범위를 검색

 

-- department_id의 2500~3500인 값의 행만 가져온다

SELECT employee_id, last_name, job_id, depratment_id
FROM employees
WHERE department_id BETWEEN 2500 AND 3500;


-- hire_date의 2019년1월1일 부터 2020년 2월 12일 까지의 날짜를 가진 행만 가져온다

SELECT employee_id, last_name, job_id, hire_date
FROM employees
WHERE hire_date BETWEEN '2019-01-01' AND '2020-02-12';

IN

하나의 값이라도 일치하는 것을 찾아줌

 

-- manager_id가 100, 101, 201 중에 하나라도 있다면 그 행을 가져온다

SELECT employee_id, last_name, job_id, depratment_id
FROM employees
WHERE manager_id IN (100, 101, 201);


-- manager_name이 'kals'와 'an'인 값을 제외한 행들을 가져온다

SELECT employee_id, last_name, job_id, manager_name
FROM employees
WHERE manager_name NOT IN ('kals', 'an');

LIKE

패턴으로 검색하는 문자열 찾기

 

  1. 임의의 하나의 문자 = _
  2. 해당하는 문자 = 알파벳 또는 문자
  3. 무슨 값이 있는 지 모를 때 = %
-- department_id의 문자열 값이 정확히 두자리인 행만 가져옴

SELECT depratment_name
FROM departments
WHERE department_name LIKE '__';


-- department_id의 문자열 값의 5번째 자리가 '7'인 행만 가져옴 (정확히 5글자인 값 중에서만)

SELECT depratment_name
FROM departments
WHERE department_name LIKE '____7';


-- department_id의 문자열 값의 3번째 자리가 'a'인 행만 가져옴 (%로 인한 길이 제약 사라짐)

SELECT depratment_name
FROM departments
WHERE department_name LIKE '__a%';


-- department_id의 마지막 문자가 'x'인 행만 가져옴

SELECT depratment_name
FROM departments
WHERE department_name LIKE '%x';


-- department_id의 열에 길이 제약 없이 'kals' 문자열이 포함된 행을 가져옴

SELECT depratment_name
FROM departments
WHERE department_name LIKE '%kals%';

IS NULL 또는 IS NOT NULL

데이터에 NULL 값이 있는 지 없는 지 검사

 

-- department_name에 NULL 값이 들어있는 행만 가져옴

SELECT depratment_name
FROM departments
WHERE department_name IS NULL;


-- department_name에 NULL이 아닌 값의 행들만 가져옴

SELECT depratment_name
FROM departments
WHERE department_name NOT IS NULL;