ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Oracle] 함수(Function) - 변환형 함수
    RDS/Oracle 2019. 3. 3. 10:00
    반응형

    변환형 함수

     변환형 함수는 특정 데이터 타입을 다양한 형식으로 출려겨하고 싶을 경우에 사용되는 함수입니다. 


    명시적(Explicit) 데이터 유형 변환 - 데이터 변환형 함수로 데이터 유형을 변환하도록 명시해 주는 경우

    암시적(Implicit) 데이터 유형 변환 - 데이터베이스가 자동으로 데이터 유형을 변환하여 계산하는 경우

     

    암시적 데이터 유형 변환의 경우 성능 저하가 발생할 수 있으며, 자동적으로 데이터베이스가 알아서 계산하지 않는 경우가 있어 에러를 발생할 수 있으므로 명시적인 데이터 유형 변환 방법을 사용하는 것이 바람직합니다.

     

    변환형 함수 종류

    TO_NUMBER(문자열) - Alphanumeric 문자열을 숫자로 변환합니다.

    TO_CHAR(숫자|날짜 [, FORMAT]) - 숫자나 날짜를 주어진 FORMAT 형태로 문자열 타입으로 변환합니다.

    TO_DATE(문자열 [, FORMAT]) - 문자열을 주어진 FORMAT 형태로 날짜 타입으로 변환합니다.

    NVL(표현식1, 표현식2) - 표현식1의 결과값이 NULL이면 표현식2의 값을 출력합니다. 단, 표현식1과 표현식2의 결과 데이터 타입이 같아야 합니다.

    DECODE(표현식, 기준값1, 값 [, 기준값2, 값2, ... , 디폴트값) - 표현식의 값이 기준값1이면 값1이 출력하고, 기준값2이면 값2가 출력됩니다. 그리고 기준값이 없으면 디폴트 값이 출력됩니다.


    날짜 출력 형식의 종류

    YYYY - 년도 표현(4자리)

    YY - 년도 표현(2자리)

    MM - 월을 숫자로 표현

    MON - 월을 문자로 표현

    DAY - 요일을 문자로 표현

    DY - 요일을 문자로 표현(약어)


    시간 출력 형식의 종류

    AM 또는 PM - 오전(AM), 오후(PM) 시각 표시

    HH 또는 HH12 - 시간(1~12)

    HH24 - 24시간으로 표현(0~23)

    MI - 분 표현

    SS - 초 표현


    NULL 특성

    1.널 값은 아직 정의되지 않은 값으로 0 또는 공백과는 다릅니다. 0은 숫자이고 공백은 문자입니다.

    2.테이블을 생성할 때 NOT NULL 또는 PRIMRAY KEY로 정의되지 않은 모든 데이터 유형은 널 값을 포함할 수 있습니다.

    3.널 값을 포함하는 연산의 경우 결과 값도 널 값입니다.

    4.결과값을 NULL이 아닌 다른 값을 얻고자 할 때 NVL 함수를 사용합니다.


    변환형 함수 예시

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    SELECT SYSDATE 
          , TO_CHAR(SYSDATE, 'YYYY')
          , TO_CHAR(SYSDATE, 'YY')
          , TO_CHAR(SYSDATE, 'MM')
          , TO_CHAR(SYSDATE, 'MON')
          , TO_CHAR(SYSDATE, 'DAY')
          , TO_CHAR(SYSDATE, 'DY')
      FROM DUAL; 
      
    SELECT SYSDATE 
          , TO_CHAR(SYSDATE, 'AM')
          , TO_CHAR(SYSDATE, 'PM')
          , TO_CHAR(SYSDATE, 'HH')
          , TO_CHAR(SYSDATE, 'HH12')
          , TO_CHAR(SYSDATE, 'HH24')
          , TO_CHAR(SYSDATE, 'MI')
          , TO_CHAR(SYSDATE, 'SS')
      FROM DUAL;   
     
    SELECT SYSDATE
          , TO_DATE('2019/03/03''YYYY/MM/DD')
          , SYSDATE - TO_DATE('2019/03/03''YYYY/MM/DD')
      FROM DUAL;
     
    SELECT SYSDATE 
          , TO_CHAR(SYSDATE, 'YYYY/MM/DD HH24:MI:SS')
      FROM DUAL;
      
    SELECT SYSDATE 
          , TO_CHAR(SYSDATE + 3/24'yyyy"년" mm"월" dd"일" hh"시" mm"분"')
      FROM DUAL; 
     
    SELECT ENAME
          , DEPTNO
          , DECODE(DEPTNO, 10'ACCOUNTING'
                         , 20'RESEARCH'
                         , 30'SALES'
                         , 40'OPERATTIONS' ) AS DNAME
      FROM EMP;
      
    SELECT ENAME
          , JOB
          , SAL
          , DECODE(JOB, 'CLERK', SAL * 1.05
                      , 'MANAGER', SAL * 1.15
                      , SAL) AS UP_SAL
      FROM EMP;  
    cs


    반응형

    'RDS > Oracle' 카테고리의 다른 글

    [Oracle] ORDER BY 절  (0) 2019.03.10
    [Oracle] GROUP BY, HAVING 절  (0) 2019.03.10
    [Oracle] 함수(Function) - 날짜형 함수  (0) 2019.03.03
    [Oracle] 함수(Function) - 숫자형 함수  (0) 2019.03.02
    [Oracle] 함수(Function) - 문자형 함수  (0) 2019.03.02

    댓글

Designed by Tistory.