logo

SQL | 조건식

다음은 SQL의 조건식입니다.

    CASE 표현식: 프로시저를 호출하지 않고도 IF-THEN-ELSE 문을 사용할 수 있습니다.
    간단한 CASE 표현식에서 SQL은 expr이 비교_expr과 동일한 첫 번째 WHEN…THEN 쌍을 검색하고 return_expr을 반환합니다. 위의 조건이 만족되지 않으면 ELSE 절이 존재하고 SQL은 else_expr을 반환합니다. 그렇지 않으면 NULL을 반환합니다.
    return_expr 및 else_expr에 리터럴 null을 지정할 수 없습니다. 모든 표현식(expr, 비교_expr, return_expr)은 동일한 데이터 유형이어야 합니다.
    통사론:



     CASE expr WHEN comparison_expr1 THEN return_expr1 [ WHEN comparison_expr2 THEN return_expr2 . . . WHEN comparison_exprn THEN return_exprn ELSE else_expr] END>

    예:

       Input : SELECT first_name, department_id, salary, CASE department_id WHEN 50 THEN 1.5*salary WHEN 12 THEN 2.0*salary ELSE salary END 'REVISED SALARY' FROM Employee;>

      출력 :

    설명 : 위의 SQL 문에서는 Department_id 값이 디코딩되었습니다. 50이면 급여가 1.5배로 지급되고, 12이면 급여가 2배로 지급되며, 그 외의 경우 급여에는 변동이 없습니다. DECODE 기능: CASE 또는 IF-THEN-ELSE 문의 작업을 수행하여 조건부 조회를 용이하게 합니다.
    DECODE 함수는 다양한 언어에서 사용되는 IF-THEN-ELSE 논리와 유사한 방식으로 표현식을 디코딩합니다. DECODE 함수는 표현식을 각 검색값과 비교한 후 디코딩합니다. 표현식이 검색과 동일하면 결과가 반환됩니다.
    기본값을 생략하면 검색 값이 결과 값과 일치하지 않는 경우 null 값이 반환됩니다.
    통사론:



    가상 메모리
     DECODE (col/expression, search1, result1 [, search2, result2,........,] [, default])>
     Input : SELECT first_name, department_id, salary, DECODE(department_id, 50, 1.5*salary, 12, 2.0*salary, salary) 'REVISED SALARY' FROM Employee;>

    출력 :

    설명: 위의 SQL 문에서는 Department_id 값이 테스트되었습니다. 50이면 급여가 1.5배로 지급되고, 12이면 급여가 2배로 지급되며, 그 외의 경우 급여에는 변동이 없습니다.

    COALESCE : null이 아닌 첫 번째 인수를 반환합니다. 모든 인수가 Null인 경우에만 Null이 반환됩니다. 표시하기 위해 데이터를 검색할 때 null 값을 기본값으로 대체하는 데 자주 사용됩니다.
    참고: CASE 표현식과 마찬가지로 COALESCE도 발견된 null이 아닌 첫 번째 인수 오른쪽에 있는 인수를 평가하지 않습니다.
    통사론:

     COALESCE( value [, ......] )>
     Input: SELECT COALESCE(last_name, '- NA -') from Employee;>

    산출:

    설명: - NA - 성이 null인 위치에는 해당 성이 표시됩니다. GREATEST: 임의 개수의 표현식 목록에서 가장 큰 값을 반환합니다. 비교는 대소문자를 구분합니다. 목록에 있는 모든 표현식의 데이터 유형이 동일하지 않으면 나머지 모든 표현식은 비교를 위해 첫 번째 표현식의 데이터 유형으로 변환되며, 이 변환이 불가능하면 SQL에서 오류가 발생합니다.
    메모: 목록에 null인 표현식이 있으면 null을 반환합니다.
    통사론:



     GREATEST( expr1, expr2 [, .....] )>
    •  Input: SELECT GREATEST('XYZ', 'xyz') from dual;>
       Output: GREATEST('XYZ', 'xyz') xyz>

      설명: 작은 알파벳의 ASCII 값이 더 큽니다.

    •  Input: SELECT GREATEST('XYZ', null, 'xyz') from dual; Output: GREATEST('XYZ', null, 'xyz') ->

      설명: 따라서 null이 존재하므로 null이 출력으로 표시됩니다(위 설명에서 언급한 대로).

    IFNULL: expr1이 NULL이 아니면 expr1을 반환합니다. 그렇지 않으면 expr2를 반환합니다. 사용되는 컨텍스트에 따라 숫자 또는 문자열 값을 반환합니다.
    통사론:

    b 플러스 트리
     IFNULL( expr1, expr2 )>
    •  Input: SELECT IFNULL(1,0) FROM dual;>
       Output: - 1>

      설명 : 이후 표현식은 null이 아닙니다.

    •  Input: SELECT IFNULL(NULL,10) FROM dual; Output: -- 10>

      설명: expr1은 null이므로 expr2가 표시됩니다.

    IN: 값 집합 내에 값이 있는지 확인하고 WHERE, CHECK 및 뷰 생성과 함께 사용할 수 있습니다.
    참고: CASE 및 COALESCE 표현식과 마찬가지로 IN도 발견된 null이 아닌 첫 번째 인수 오른쪽에 있는 인수를 평가하지 않습니다.
    통사론:

     WHERE column IN ( x1, x2, x3 [,......] )>
     Input: SELECT * from Employee WHERE department_id IN(50, 12);>

    산출:

    설명: 직원의 모든 데이터는 부서 ID 50 또는 12로 표시됩니다.

    사용자 이름의 예
    LEAST: 임의 개수의 표현식 목록에서 가장 작은 값을 반환합니다. 비교는 대소문자를 구분합니다. 목록에 있는 모든 표현식의 데이터 유형이 동일하지 않으면 나머지 모든 표현식은 비교를 위해 첫 번째 표현식의 데이터 유형으로 변환되며, 이 변환이 불가능하면 SQL에서 오류가 발생합니다.
    참고: 목록에 null인 표현식이 있으면 null을 반환합니다.

    통사론:

     LEAST( expr1, expr2 [, ......] )>
    •  strong>입력: 듀얼에서 SELECT LEAST('XYZ', 'xyz'); 출력: LEAST('XYZ', 'xyz') XYZ>

      설명: 대문자의 ASCII 값은 더 작습니다.

    •  Input: SELECT LEAST('XYZ', null, 'xyz') from dual; Output: LEAST('XYZ', null, 'xyz') ->

      설명: 따라서 null이 존재하므로 null이 출력으로 표시됩니다(위 설명에서 언급한 대로).

    NULLIF: value1=value2이면 null 값을 반환하고, 그렇지 않으면 value1을 반환합니다.
    통사론:

     NULLIF( value1, value2 )>

    예:

     Input: SELECT NULLIF(9995463931, contact_num) from Employee;>

    산출:

    C 코드 문자열 배열

설명: 주어진 번호와 일치하는 번호를 가진 Employee에 대해서는 NULL이 표시됩니다. 나머지 직원에 대해서는 value1이 반환됩니다.