우당탕탕 개발일기
[MSSQL] ROUND로 소수점 자리 표시하기 본문
소수점을 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은 떨어져있었다.
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
'What I Learned > SQL' 카테고리의 다른 글
[MSSQL] 같은/다른 DB에서 테이블 복사하기 (0) | 2022.09.08 |
---|---|
[MSSQL] 개체 이름이 유효하지 않습니다 (0) | 2022.09.08 |
MSSQL WHERE 1 = 1 / 1 = 2 (0) | 2022.09.01 |
MSSQL에서 Cannot read property '0' of undefined (0) | 2022.09.01 |
MSSQL 표준편차 구하기 (0) | 2022.08.23 |