함수 - SQL Server의 소수 자릿수(반올림하지 않음)




엑셀 소수점 반올림 (11)

반올림하지 않고 SQL에서 여분의 소수 자릿수를 자르거나 버리는 가장 좋은 방법을 결정하려고합니다. 예 :

declare @value decimal(18,2)

set @value = 123.456

이것은 자동으로 @Value를 123.46으로 바꿀 것입니다. 대부분의 경우에 좋습니다. 그러나,이 프로젝트를 위해 나는 그것을 필요로하지 않는다. 필요하지 않은 소수를자를 수있는 간단한 방법이 있습니까? 나는 left () 함수를 사용하고 10 진수로 다시 변환 할 수 있다는 것을 알고있다. 다른 방법은 없을까?


10 진수 값만 원한다고 생각합니다.이 경우 다음을 사용할 수 있습니다.

declare @val decimal (8, 3)
SET @val = 123.456

SELECT @val - ROUND(@val,0,1)

Round는 선택적 매개 변수를가집니다.

Select round(123.456, 2, 1)  will = 123.45
Select round(123.456, 2, 0)  will = 123.46

나는 이것이 꽤 늦었다는 것을 알고있다. 그러나 나는 대답으로 보지 않고이 트릭을 오랫동안 사용 해왔다.

단순히 값에서 0.005를 빼고 Round (@ num, 2)를 사용하십시오.

귀하의 예 :

declare @num decimal(9,5) = 123.456

select round(@num-.005,2)

123.45를 반환합니다.

찾고있는 올바른 값으로 반올림을 자동으로 조정합니다.

그건 그렇고, 당신은 영화 Office Space에서 프로그램을 재생하고 있습니까?


나는이 질문이 실제로 오래되었다는 것을 알고 있지만 아무도 서브 문자열을 사용하지 않았다. 장점으로는 정말 긴 숫자 (보통 8000자인 SQL 서버의 문자열 제한)를 반올림하는 기능입니다.

SUBSTRING('123.456', 1, CHARINDEX('.', '123.456') + 2)

라운딩 솔루션 및 예제가없는 또 다른 절사.

    Convert 71.950005666 to a single decimal place number (71.9)
    1) 71.950005666 * 10.0 = 719.50005666
    2) Floor(719.50005666) = 719.0
    3) 719.0 / 10.0 = 71.9

    select Floor(71.950005666 * 10.0) / 10.0

실제로 세 번째 매개 변수가 0 또는 1 또는 2이면 값을 반올림하지 않습니다.

CAST(ROUND(10.0055,2,0) AS NUMERIC(10,2))

이 코드를 사용하여 소수점 이하 2 자리로 소수점 이하 3 자리를 변환하십시오.

declare @val decimal (8, 2)
select @val = 123.456
select @val =  @val

select @val

출력은 123.46입니다.


잘라 내기 및 반올림 할 수 있었던 방법은 다음과 같습니다.

select 100.0019-(100.0019%.001)

100.0010을 반환합니다.

그리고 당신의 예 :

select 123.456-(123.456%.001)

123.450을 반환합니다.

자, 이제 끝내기 0을 없애고 싶다면 간단히 말해서 :

select cast((123.456-(123.456%.001)) as decimal (18,2))

123.45를 반환합니다.


ROUND ( 123.456 , 2 , 1 )

세 번째 매개 변수 ! = 0 일 때 라운드 대신 자릅니다.

http://msdn.microsoft.com/en-us/library/ms175003(SQL.90).aspx

통사론

ROUND (숫자 식, 길이 [, 함수])

인수

  • numeric_expression 비트 데이터 유형을 제외하고 정확한 숫자 또는 근사 숫자 데이터 유형 범주의 표현식입니다.

  • length numeric_expression이 반올림 될 정밀도입니다. length는 유형이 tinyint, smallint 또는 int 인 표현식이어야합니다. length가 양수인 경우 numeric_expression은 length로 지정된 소수 자리의 수로 반올림됩니다. length가 음수이면 numeric_expression은 length로 지정된 소수점의 왼쪽에 반올림됩니다.

  • function 수행 할 조작의 유형입니다. 함수는 tinyint, smallint 또는 int 여야합니다. 함수가 생략되거나 값이 0 (기본값)이면 numeric_expression이 반올림됩니다. 0 이외의 값을 지정하면 numeric_expression이 잘립니다.

SELECT Cast(Round(123.456,2,1) as decimal(18,2))

select round(123.456, 2, 1)






rounding