본문 바로가기
SQL

SQL_오라클 내장함수(변환함수, 기타함수)

by 유서담 2023. 12. 12.

변환함수

 

묵시적 변환

  • 변환함수를 사용하지 않아도 데이터의 타입이 자동으로 변하는 것
  • '문자' -> 날짜 : '문자'가 유효한 날짜 형식의 문자인 경우 날짜로 변경된다
  • '문자' -> 숫자 : '문자'가 숫자로만 구성되어 있으면 숫자로 변경된다

 

SELECT * 
FROM EMPLOYEES
    WHERE HIRE_DATE >= '2005/01/01' AND HIRE_DATE < '2005/07/01';
    
* 위의 SQL에서 HIRE_DATE가 DATE타입의 컬럼이기 때문에 '2005/01/01'문자가 DATE타입의 값으로 자동으로 변환된다
* '2005/01/01'이나 '2005-01-01'의 형식인 경우 자동으로 변환된다

 

SELECT *
    FROM EMPLOYEES
    WHERE DEPARTMENT_ID = '10';
    
* 위의 SQL문에서 DEPARTMENT_ID가 NUMBER타입의 컬럼이기 때문에 '10'문자가 NUMBER타입의 값으로 자동으로 변환된다

 

 

 

명시적 변환

 

  • 변환함수를 사용해서 '문자' 와 날짜, '문자' 와 숫자 간의 데이터변환을 하는 것이다

 

TO_DATE('날짜형식의 문자열', '패턴')
    예) TO_DATE('2023/01/01')
       * 문자열이 날짜형식의 텍스트이기 때문에 패턴을 지정하지 않아도 DATE타입으로 변환된다
        TO_DATE('20230101', 'YYYYMMDD')
        * 문자열이 일반적이니 날짜 형식이 아닌 경우에는 패턴을 지정해야 한다

 

TO_CHAR(날짜, '포맷')
        날짜를 지정된 포맷형식의 텍스트를 변환한다
        날짜 변환 형식
            AM          '오전'
            PM          '오후'
            YYYY, YY    '2022'
            MM          월
            D           1~7(1:일요일, 7:토요일)   
            DAY         요일
            DD          1~31
            HH          12시간제 시간
            HH24        24시간제 시간
            MI          분
            SS          초
        * 날짜 변환 형식은 대소문자를 구분하지 않는다

 

 

 

문자를 날짜로 변환하는 예시

문자를 날짜로 변환한 출력 결과

 

 

 

날짜를 문자로 변환하는 예시

날짜를 문자로 변환한 출력 결과

 

 

 

특정 날짜값에 해당하는 값을 조회할때 문자를 사용해서 조회하기

문자를 날짜값으로 변환하여 결과출력. 아래와 위 코드 둘다 같은 결과를 출력한다

 

 

 

TO_CHAR를 사용해서 숫자를 문자로 바꾸는 것이 가능하다

참고로 숫자타입은 출력창에서 우측정렬이 되고 문자타입은 좌측정렬이 된다

 

 

 

TO_NUMBER를 사용해서 문자를 숫자로 변환이 가능하다

위 사진설명에서 말했지만 숫자 타입이기 때문에 우측정렬로 결과가 출력된 것을 알 수 있다

 

 

 

 

단일행 함수 - 기타함수

 

NVL(컬럼, 대체값)

  • NVL함수는 NULL값을 다른 값으로 변환한다
  • 지정된 컬럼의 값이 NULL이 아닌 경우에는 해당 컬럼의 값을 반환한다
  • 해당 컬럼과 대체값은 데이터 타입이 동일한 타입이어야 한다

 

NVL2(컬럼, 대체값, 대체값2)

  • 지정된 컬럼의 값이 NULL이 아니면 대체값1이 반환되고, NULL이면 대체값2가 반환된다
  • 대체값1과 대체값2는 데이터 타입이 동일한 타입이어야 한다

 

 

 

NVL 사용예시

NVL 사용예시 및 출력결과

 

 

NVL을 응용한 코드

 

 

 

 

단일행 함수 - 기타함수

 

 DECODE(컬럼, 비교값1, 값1,
                비교값2, 값2,
                비교값3, 값3,
                기본값)
    지정된 컬럼의 값이 비교값1과 같으면 값1이 반환
                    비교값2와 같으면 값2가 반환
                    비교값3과 같으면 값3이 반환
                    일치하는 값이 없으면 기본값이 반환된다
    * DECODE함수는 컬럼의 값과 비교값간의 EQUALS 비교만 가능하다

 

CASE ~ WHEN 표현식
    CASE
        WHEN 조건식1 THEN 값1
        WHEN 조건식2 THEN 값2
        WHEN 조건식3 THEN 값
        ELSE 값4
    END
    * 조건식1이 TRUE로 판정되면 THEN의 값이 최종값이 된다
    * 모든 조건식이 FALSE로 판정되면 ELSE의 값4가 최종값이 된다
    * 조건식에서는 =, >, >=, <, <=, != 등의 다양한 연산자를 사용해서 조건식을 작성할 수 있다
    * DECODE함수에 비교했을 때 더 다양한 조건을 적용할 수 있다

 

    CASE 컬럼
        WHEN 조건식1 THEN 값1
        WHEN 조건식2 THEN 값2
        WHEN 조건식3 THEN 값3
        ELSE 값4
    END
    * 지정된 컬럼의 값이 비교값들 중 하나와 일치하면 해당 THEN의 값이 최종값이 된다
    * 모든 비교값과 일치하지 않으면 ELSE의 값4가 최종값이 된다
    * DECODE 함수와 기능면에서 동일하다

 

 

 

CASE ~ WHEN ~ END 사용예시

CASE ~ WHEN ~ END 사용예시 및 결과 출력

 

 

이런식으로도 활용할 수도 있다

 

 

 

 

DECODE 사용예시

DECODE 사용예시 및 결과출력

 

'SQL' 카테고리의 다른 글

SQL_그룹함수(GROUP BY, HAVING)  (0) 2023.12.14
SQL_Join  (0) 2023.12.13
SQL_오라클 내장함수 (문자함수, 숫자함수, 날짜함수)  (1) 2023.12.11
SQL_오라클의 데이터타입  (2) 2023.12.07
SQL_테이블, DML  (2) 2023.12.06