다음을 통해 공유


ROUND(Transact-SQL)

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics분석 플랫폼 시스템(PDW)Microsoft Fabric의 SQL 분석 엔드포인트Microsoft Fabric의 웨어하우스Microsoft Fabric의 SQL 데이터베이스

특정 길이나 전체 자릿수로 반올림한 숫자 값을 반환합니다.

Transact-SQL 구문 표기 규칙

구문

ROUND ( numeric_expression , length [ , function ] )

인수

numeric_expression

정밀 숫자 또는 근사 숫자 데이터 형식 범주의 입니다.

length

numeric_expression 정밀하게 다소 반올림되어야 합니다. lengthtinyint, smallint 또는 int 형식의 식이어야 합니다. length가 양수이면 numeric_expressionlength로 지정된 10진수 자리의 숫자로 반올림됩니다. length가 음수이면 numeric_expressionlength로 지정된 소수점의 왼쪽에 반올림됩니다.

function

어떤 종류의 수술을 수행해야 할지. 함수tinyint, smallint, int여야 합니다. 함수 가 생략되었거나 (기본값) 값이 될 0 경우, numeric_expression 반올림됩니다. 이 아닌 0 값이 지정되면 numeric_expression 절단됩니다.

반환 형식

다음 데이터 형식을 반환합니다.

식 결과 반환 형식
tinyint int
smallint int
int int
bigint bigint
decimalnumeric 범주(p, s) 십진법(p, s)
moneysmallmoney 범주 money
floatreal 범주 float

설명

  • ROUND 항상 값을 반환합니다. 길이가 음수이고 소수 ROUND 점 앞의 숫자 수보다 크면 를 반환합니다0.

    예제 결과
    ROUND(748.58, -4) 0
  • ROUND 길이가 음수일 때 데이터 타입과 관계없이 반올림 numeric_expression을 반환합니다.

    예제 결과
    ROUND(748.58, -1) 750.00
    ROUND(748.58, -2) 700.00
    ROUND(748.58, -3) 748.58이 기본값인 십진법(5, 2)1000.00으로 돌아가기 때문에 산술 오버플로우가 발생합니다.
  • 최대 네 자리로 반올림하려면 입력의 데이터 타입을 변경하세요. 예를 들면 다음과 같습니다.

    SELECT ROUND(CAST (748.58 AS DECIMAL (6, 2)), -3);
    

    결과 집합은 다음과 같습니다.

    1000.00
    
  • ROUND 0에서 절반 반올림(상업적 반올림이라고도 함)으로 동점을 깨뜨립니다.

    예제 결과
    ROUND(1.15, 1) 1.2
    ROUND(-1.15, 1) -1.2

예제

A. ROUND와 추정치를 사용하세요

다음 예시는 를 사용하여 ROUND마지막 숫자가 항상 추정임을 보여주는 두 가지 식을 보여줍니다.

SELECT ROUND(123.9994, 3),
       ROUND(123.9995, 3);
GO

결과 집합은 다음과 같습니다.

----------- -----------
123.9990    124.0000

B. ROUND 및 반올림 근사를 사용하세요

다음 예에서는 반올림과 어림값을 보여 줍니다.

SELECT ROUND(123.4545, 2),
       ROUND(123.45, -2);

결과 집합은 다음과 같습니다.

----------  ----------
123.4500    100.00

C. ROUND를 사용해 절단하세요

다음 예에서는 두 개의 SELECT 문을 사용하여 반올림과 자르기 간의 차이를 보여 줍니다. 첫 번째 문은 결과를 반올림하고 두 번째 문은 결과를 자릅니다.

SELECT ROUND(150.75, 0);
GO

결과 집합은 다음과 같습니다.

151.00
SELECT ROUND(150.75, 0, 1);
GO

결과 집합은 다음과 같습니다.

150.00