ROUND(Transact-SQL)
특정 길이나 전체 자릿수로 반올림한 숫자 값을 반환합니다.
적용 대상: SQL Server(SQL Server 2008 - current version), Windows Azure SQL 데이터베이스(최초 릴리스 - 현재 릴리스) |
구문
ROUND ( numeric_expression , length [ ,function ] )
인수
numeric_expression
bit 데이터 형식을 제외한 정확한 수치 또는 근사치 데이터 형식 범주의 식입니다.length
numeric_expression을 반올림하는 전체 자릿수입니다. length는 tinyint, smallint 또는 int 유형의 식이어야 합니다. length가 양수일 경우 numeric_expression은 length에서 지정한 소수 자릿수로 반올림됩니다. length가 음수일 경우 numeric_expression은 length에서 지정한 대로 소수점의 왼쪽에서 반올림됩니다.function
수행할 연산의 유형입니다. function은 tinyint, smallint 또는 int여야 합니다. function을 생략하거나 값이 0(기본값)일 경우 numeric_expression은 반올림됩니다. 0이 아닌 값을 지정하면 numeric_expression이 잘립니다.
반환 형식
다음 데이터 형식을 반환합니다.
식 결과 |
반환 형식 |
---|---|
tinyint |
int |
smallint |
int |
int |
int |
bigint |
bigint |
decimal 및 numeric 범주(p, s) |
decimal(p, s) |
money 및 smallmoney 범주 |
money |
float 및 real 범주 |
float |
주의
ROUND는 항상 하나의 값을 반환합니다. length가 음수이고 소수점 전의 자릿수보다 클 경우 ROUND는 0을 반환합니다.
예 |
결과 |
---|---|
ROUND(748.58, -4) |
0 |
length가 음수일 경우 ROUND는 데이터 형식에 관계없이 반올림된 numeric_expression을 반환합니다.
예 |
결과 |
---|---|
ROUND(748.58, -1) |
750.00 |
ROUND(748.58, -2) |
700.00 |
ROUND(748.58, -3) |
748.58은 기본적으로 10진수(5,2)로 1000.00을 반환할 수 없기 때문에 산술 오버플로가 발행합니다. |
4자릿수까지 반올림하려면 입력 데이터 형식을 변경합니다. 예를 들면 다음과 같습니다. SELECT ROUND(CAST (748.58 AS decimal (6,2)),-3); |
1000.00 |
예
1.ROUND 및 어림값 사용
다음 예에서는 마지막 자릿수가 항상 어림값인 ROUND를 사용하는 두 개의 식을 보여 줍니다.
SELECT ROUND(123.9994, 3), ROUND(123.9995, 3);
GO
결과 집합은 다음과 같습니다.
----------- -----------
123.9990 124.0000
2.ROUND 사용 및 어림값 반올림
다음 예에서는 반올림과 어림값을 보여 줍니다.
SELECT ROUND(123.4545, 2);
GO
SELECT ROUND(123.45, -2);
GO
결과 집합은 다음과 같습니다.
----------
123.4500
(1 row(s) affected)
--------
100.00
(1 row(s) affected)
3.ROUND를 사용하여 자르기
다음 예에서는 두 개의 SELECT 문을 사용하여 반올림과 자르기 간의 차이를 보여 줍니다. 첫 번째 문은 결과를 반올림하고 두 번째 문은 결과를 자릅니다.
SELECT ROUND(150.75, 0);
GO
SELECT ROUND(150.75, 0, 1);
GO
결과 집합은 다음과 같습니다.
--------
151.00
(1 row(s) affected)
--------
150.00
(1 row(s) affected)