neiyan 2015.04.07 16:47 Views : 2941
파일용량이 들어가 있는 컬럼이 있는데요.
이걸 보여줄때 kb 아님 mb 로 보여줘야 되는데
이걸 환산을 어떻게 해야 하는 방법이 있을까요?
1001000 -> 1MB 잔아요
흠 잘 모르곘어요
2015.04.08 08:34
파일용량의 단위가 무엇인지 그리고 KB로만 보여줄건지 MB로만 보여줄건지 아니면 적당히 보여줄건지에 따라 다르겠네요.
2의 10승은 1024이니까
KB로 저장된걸 MB로 보여줄려면 단순히 1024로 나눠주면 됩니다.
근데 그게 아니고
몽땅 바이트로 들어가 있는데
이걸 적당히 KB, MB, GB등으로 보여달라고 하면....
일단 고등학교 수학책을 펴고.... 밑을 10으로 하는 로그합수에 대해 공부해봅시다.... ㅠㅠ
DECLARE @FILE TABLE (FILENAME VARCHAR(100), SIZE INT)
INSERT @FILE
SELECT 'A.JPG', 1
UNION ALL SELECT 'B.JPG', 1024
UNION ALL SELECT 'C.JPG', 1024 + 512
UNION ALL SELECT 'D.JPG', 1024*1024
UNION ALL SELECT 'E.JPG', 1024*1024 + 1024*512
UNION ALL SELECT 'F.JPG', 1024*1024 * 1024
UNION ALL SELECT 'G.JPG', 1024*1024*1024 + 1024*1024*512
SELECT FILENAME,
SIZE,
LOG = LOG10(SIZE),
SIZE = CASE WHEN LOG10(SIZE) < 3 THEN CONVERT(VARCHAR(10), CONVERT(NUMERIC(9, 1), SIZE)) + 'KB'
WHEN LOG10(SIZE) >= 3 AND LOG10(SIZE) < 6 THEN CONVERT(VARCHAR(10), CONVERT(NUMERIC(9, 1), SIZE / 1024.0)) + 'MB'
WHEN LOG10(SIZE) >= 6 AND LOG10(SIZE) < 9 THEN CONVERT(VARCHAR(10), CONVERT(NUMERIC(9, 1), SIZE / 1024.0 / 1024.0)) + 'GB'
ELSE CONVERT(VARCHAR(10), CONVERT(NUMERIC(9, 1), SIZE / 1024.0 / 1024.0 / 1024.0)) + 'TB' END
FROM @FILE
cmd_comment_vote_user Upvote0 Downvote0
Keep me signed in.
파일용량의 단위가 무엇인지 그리고 KB로만 보여줄건지 MB로만 보여줄건지 아니면 적당히 보여줄건지에 따라 다르겠네요.
2의 10승은 1024이니까
KB로 저장된걸 MB로 보여줄려면 단순히 1024로 나눠주면 됩니다.
근데 그게 아니고
몽땅 바이트로 들어가 있는데
이걸 적당히 KB, MB, GB등으로 보여달라고 하면....
일단 고등학교 수학책을 펴고.... 밑을 10으로 하는 로그합수에 대해 공부해봅시다.... ㅠㅠ
DECLARE @FILE TABLE (FILENAME VARCHAR(100), SIZE INT)
INSERT @FILE
SELECT 'A.JPG', 1
UNION ALL SELECT 'B.JPG', 1024
UNION ALL SELECT 'C.JPG', 1024 + 512
UNION ALL SELECT 'D.JPG', 1024*1024
UNION ALL SELECT 'E.JPG', 1024*1024 + 1024*512
UNION ALL SELECT 'F.JPG', 1024*1024 * 1024
UNION ALL SELECT 'G.JPG', 1024*1024*1024 + 1024*1024*512
SELECT FILENAME,
SIZE,
LOG = LOG10(SIZE),
SIZE = CASE WHEN LOG10(SIZE) < 3 THEN CONVERT(VARCHAR(10), CONVERT(NUMERIC(9, 1), SIZE)) + 'KB'
WHEN LOG10(SIZE) >= 3 AND LOG10(SIZE) < 6 THEN CONVERT(VARCHAR(10), CONVERT(NUMERIC(9, 1), SIZE / 1024.0)) + 'MB'
WHEN LOG10(SIZE) >= 6 AND LOG10(SIZE) < 9 THEN CONVERT(VARCHAR(10), CONVERT(NUMERIC(9, 1), SIZE / 1024.0 / 1024.0)) + 'GB'
ELSE CONVERT(VARCHAR(10), CONVERT(NUMERIC(9, 1), SIZE / 1024.0 / 1024.0 / 1024.0)) + 'TB' END
FROM @FILE