hyeonga_code

Database_11_데이터 제한 및 관리_비교 조건 연산자 본문

Oracle Database

Database_11_데이터 제한 및 관리_비교 조건 연산자

hyeonga 2023. 7. 14. 05:59
반응형

 

-- 기타 SQL 비교 조건 연산자
    -- BETWEEN 'A' AND 'B' : A와 B의 값 사이
    -- IN(데이터 목록) : 괄호 안의 값 목록 중 하나와 일치
    -- LIKE : 문자 패턴이 일치
    -- IS NULL : 널 값
    
    -- BETWEEN 'A' AND 'B'
        -- 조건을 사사용하여 값의 범위에 따라 행을 출력합니다.
SELECT employee_id, last_name, salary, hire_date
FROM employees
WHERE salary BETWEEN 6000 AND 9000;

SELECT employee_id, last_name, salary, hire_date
FROM employees
WHERE hire_date BETWEEN '2001/01/01' AND '2010/12/01';
   /*
    EM_ID       LAST_NAME   SALARY     HIRE_DATE
    ---------------------------------------------------------------------
    103             Hunold               9000           05/01/03
    ...
    206             Gietz                 8300           09/06/07
    */


    -- IN(데이터 목록)
        -- 데이터 값이 있는지 확인할 수 있습니다.
SELECT employee_id, last_name, salary, hire_date
FROM employees
WHERE department_id IN(60,80);
    /*
    EM_ID       LAST_NAME   SALARY     HIRE_DATE
    ----------------------------------------------------------------------
    103               Hunold           9000           05/01/03
    104               Ernst              6000           06/05/21
    107               Lorentz          4200           14/02/07
    149               Zlotkey          10500          15/01/29
    174               Abel              11000           11/05/11
    176               Taylor            8600            13/03/24
    */


    -- LIKE
        -- 유효한 검색 문자열 값인 대체 문자를 사용하여 검색할 수 있습니다.
        -- 검색 문자열은 두 가지 기호를 사용하여 구성합니다.
            -- % : 문자가 오지 않거나 여러 개의 문자가 올 수 있습니다.
            -- _ : 한 개당 하나의 문자가 올 수 있습니다.
        -- 이름이 K로 시작하는 직원 정보
SELECT employee_id, last_name, salary, hire_date, department_id
FROM employees
WHERE last_name LIKE 'K%';
    /*
    EM_ID       LAST_NAME   SALARY     HIRE_DATE    DP_ID
    ------------------------------------------------------------------------------------
    100               King                 24000           02/06/17           90
    101               Kochhar           17000           04/09/21           90
    */
    


        -- 이름이 n으로 끝나는 직원 정보
SELECT employee_id, last_name, salary, hire_date, department_id
FROM employees
WHERE last_name LIKE '%n';
    /*
    EM_ID       LAST_NAME   SALARY     HIRE_DATE    DP_ID

    ---------------------------------------------------------------------------------
    102           De Haan             17000           08/01/13          90
    200           Whalen                 4400           02/09/17           10
    201           Hartstein             13000           11/02/17           20
    */

  
        -- 이름의 두 번째 문자가 a인 직원 정보 
SELECT employee_id, last_name, salary, hire_date, department_id
FROM employees
WHERE last_name LIKE '_a%';
    /*
    EM_ID       LAST_NAME   SALARY     HIRE_DATE    DP_ID

    ---------------------------------------------------------------------------------

    141             Rajs                 3500         10/10/17             50
    142             Davies             3100         12/01/29             50
    143             Matos              2600         13/03/15             50
    144             Vargas             2500         13/07/09             50
    176             Taylor               8600         13/03/24             80
    201             Hartstein         13000        11/02/17              20
    202             Fay                 6000          12/08/17              20
    */


        -- 성이 4글자인 직원 정보 
SELECT employee_id, last_name, salary, hire_date, department_id
FROM employees
WHERE last_name LIKE '____';
    /*
    EM_ID       LAST_NAME   SALARY     HIRE_DATE    DP_ID

    ---------------------------------------------------------------------------------

    100               King                 24000         02/06/17           90
    141               Rajs                 3500           10/10/17           50
    174               Abel                 11000          11/05/11           80
    */
   


    -- 데이터의 _ / %를 검색하고 싶은 경우 예외처리를 해야합니다.
        -- '\_ \%' ESCAPE '\'
        -- ESCAPE 뒤에 지정한 기호의 바로 뒤에 나오는 문자는 데이터입니다.
SELECT employee_id, last_name, salary, hire_date, job_id
FROM employees
WHERE job_id LIKE 'IT\_%' ESCAPE '\';
    /*
    EM_ID       LAST_NAME   SALARY     HIRE_DATE    DP_ID

    ---------------------------------------------------------------------------------

    103               Hunold           9000           05/01/03       IT_PROG
    104               Ernst              6000           06/05/21       IT_PROG
    107               Lorentz           4200           14/02/07       IT_PROG
    */


    
    -- IS NULL
        -- 널 값은 어떠한 값도 저장하지 않은 상태이므로 비교연산자를 사용할 수 없습니다.
SELECT employee_id, last_name, salary, manager_id
FROM employees
WHERE manager_id=NULL;

SELECT employee_id, last_name, salary, manager_id
FROM employees
WHERE manager_id IS NULL;
    /*
    EM_ID       LAST_NAME   SALARY     M_ID

    ---------------------------------------------------------------------------------

    100               King                 24000       (null)
    */

반응형