우당탕탕 개발일기

[MSSQL] ROUND로 소수점 자리 표시하기 본문

What I Learned/SQL

[MSSQL] ROUND로 소수점 자리 표시하기

rilee 2022. 8. 23. 14:17
728x90

소수점을 n째자리까지 잘라주세요~ 하는 요청이 엄청엄청 많이 들어왔었다.

개인적으로 절삭할때는 `ROUND`가 제일 적절한 것 같아서 자주 사용했다.

-- ROUND 기본 형태
ROUND(반올림 할 숫자, 반올림 할 자릿수 [, 반올림 여부])

1. 반올림 할 자릿수

1) 양수이면 지정한 소수점 아래 자릿수로 반올림

DECLARE @NUM FLOAT
SET @NUM = 346.37402

SELECT
ROUND(@NUM, 2)       -- 소숫점 아래 두번째 자릿수까지 출력
-- 346.37
, ROUND(@NUM, 1)     -- 소숫점 아래 첫번째 자릿수까지 출력
-- 346.4

2) 0이면 가장 가까운 정수로 반올림

DECLARE @NUM FLOAT
SET @NUM = 346.37402
SET @NUM2 = 346.89

SELECT
ROUND(@NUM, 0)       -- 가장 가까운 정수
-- 346
, ROUND(@NUM2, 0)       -- 가장 가까운 정수
-- 347

3) 음수지정한 소수점 위 자리에서 반올림

DECLARE @NUM FLOAT
SET @NUM = 346.37402

SELECT
ROUND(@NUM, -1)       -- 소숫점 위 첫번째 자릿수에서 반올림
-- 350
, ROUND(@NUM, -2)     -- 소숫점 위 두번째 자릿수에서 반올림
-- 300

2. 반올림 여부

1) 생략 혹은 0이면 반올림 적용

2) 그 외 숫자(양수, 음수 상관 X)이면** 반올림 적용 안하고 절삭

 

 

개인적으로는 작업시 제일 상단에서 소수점 자리를 다듬는게 요청한 데이터와 정확히 맞았다.

(초반에 다듬고 시작하면 요청한 데이터와 0.01 차이로 안맞는 경우가 왕왕 있었음)

 

그리고 ROUND를 썼는데도 소숫점 자리에 0이 엄청 많이 뜰 때는 CONVERT나 CAST로 형변환을 해주었다.

이 때 DECIMAL은 반올림이 되기때문에, 나같은 경우에는 소수점에 0이 많이 붙어서 반올림 영향 안받을때만 써주었다.

ex) DECIMAL(4, 2) : "숫자 4자리 중 소수점 셋째자리에서 반올림하여 소수점 두번째자리까지 표기"

 

CONVERT/CAST 했는데도 안먹힌다~하는 경우에는

데이터 표시형식???때문에 SQL 스튜디오에서는 0 많이 붙어서 보일 수도 있다고 들었다.

그 때 클라이언트쪽 화면 확인해보니 0은 떨어져있었다.

 

 

https://support.microsoft.com/ko-kr/office/round-%ED%95%A8%EC%88%98-c018c5d8-40fb-4053-90b1-b3e7f61a213c

 

ROUND 함수 - Microsoft 지원

설명 ROUND 함수는 숫자를 지정한 자릿수로 반올림합니다. 예를 들어 셀 A1에 23.7825가 포함된 경우 값을 소수 2자리로 반올림하려면 다음 수식을 사용할 수 있습니다. =ROUND(A1, 2) 이 함수의 결과는 2

support.microsoft.com

https://freeprog.tistory.com/184

 

mssql -- round ; 소수점 자리수 반올림 또는 제거

mssql -- round ; 소수점 자리수 반올림 또는 제거 환경 : MSSQL 2005 참고 : https://msdn.microsoft.com/en-us/library/ms175003.aspx ROUND ( 원본값, 반올림자릿수, [반올림여부] ) --- 원본값 ; round( ) 를 적용할 수 반올림

freeprog.tistory.com

 

728x90