Programming/기본 (Baisc)
[DB][MARIADB][MYSQL] 파일 사이즈 변환 쿼리
YH.Dream
2022. 10. 4. 15:34
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;