1. 개요 

 해당 소스는 DB 통계 추출 과정에서 파일 사이즈 관련하여, BYTE,KB,MB,GB,TB,PB 등 단위 환산을 위해 개발된 소스이다.

2. 소스


create or replace function FN_SIZE_CONV(BYTE_SIZE BIGINT) RETURNS VARCHAR(200)
BEGIN

    DECLARE RTN_CONV VARCHAR(200);
    DECLARE RTN_CONV_UNIT VARCHAR(200);

    DECLARE UNIT_BYTE BIGINT;
    DECLARE UNIT_KB BIGINT;
    DECLARE UNIT_MB BIGINT;
    DECLARE UNIT_GB BIGINT;
    DECLARE UNIT_TB BIGINT;
    DECLARE UNIT_PB BIGINT;

    SET UNIT_BYTE = 1024;
    SET UNIT_KB = 1024 * 1024;
    SET UNIT_MB = 1024 * 1024 * 1024;
    SET UNIT_GB = 1024 * 1024 * 1024 * 1024;
    SET UNIT_TB = 1024 * 1024 * 1024 * 1024 * 1024;
    SET UNIT_PB = 1024 * 1024 * 1024 * 1024 * 1024 * 1024;

    CASE WHEN BYTE_SIZE <= UNIT_KB THEN SET RTN_CONV_UNIT = 'BYTE';
        WHEN BYTE_SIZE <= UNIT_MB THEN SET RTN_CONV_UNIT = 'KB';
        WHEN BYTE_SIZE <= UNIT_GB THEN SET RTN_CONV_UNIT = 'MB';
        WHEN BYTE_SIZE <= UNIT_TB THEN SET RTN_CONV_UNIT = 'GB';
        WHEN BYTE_SIZE <= UNIT_PB THEN SET RTN_CONV_UNIT = 'TB';
        ELSE BEGIN
        END;
        END CASE;

    CASE WHEN BYTE_SIZE <= UNIT_KB THEN SET RTN_CONV = BYTE_SIZE / UNIT_MB;
        WHEN BYTE_SIZE <= UNIT_MB THEN SET RTN_CONV = BYTE_SIZE / UNIT_MB;
        WHEN BYTE_SIZE <= UNIT_GB THEN SET RTN_CONV = BYTE_SIZE / UNIT_MB;
        WHEN BYTE_SIZE <= UNIT_TB THEN SET RTN_CONV = BYTE_SIZE / UNIT_GB;
        WHEN BYTE_SIZE <= UNIT_PB THEN SET RTN_CONV = BYTE_SIZE / UNIT_TB;
        ELSE BEGIN
        END;
        END CASE;

    SET RTN_CONV = ROUND(RTN_CONV, 2);

    IF RTN_CONV = 0 THEN
        SET RTN_CONV = '무제한' , RTN_CONV_UNIT = '';
    END IF;

    RETURN (CONCAT(RTN_CONV, ' ', RTN_CONV_UNIT));
end;

 

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기