programing

SQL Server에서 소수점 이하 자리 잘라내기(둥글지 않음)

bestprogram 2023. 4. 7. 22:03

SQL Server에서 소수점 이하 자리 잘라내기(둥글지 않음)

반올림하지 않고 SQL에서 소수점 이상의 숫자를 잘라내거나 삭제하는 가장 좋은 방법을 찾고 있습니다.예를 들어 다음과 같습니다.

declare @value decimal(18,2)

set @value = 123.456

으로 반올림됩니다.@value123.46대부분의 경우 좋습니다.하지만 이 프로젝트에는 그것이 필요 없습니다.필요 없는 소수점을 잘라내는 간단한 방법이 있나요?는 내가 할 수 것을 .left()함수하고 소수점으로 다시 변환합니다.른른른른 른른른?

ROUND ( 123.456 , 2 , 1 )

세 번째 매개 변수가 != 0이면 반올림 대신 잘립니다.

구문

ROUND ( numeric_expression , length [ ,function ] )

논쟁들

  • numeric_expression비트 데이터 유형을 제외한 정확한 숫자 또는 대략적인 숫자 데이터 유형 범주를 나타냅니다.

  • length입니다.numeric_expression 올올 must must must int . length intsmallint int int int int int int type be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be is is be be은 lengthlength로 됩니다.숫자 표시

  • functionint여야 .작은 박하, 작은 박하0(수치)을 사용하다.0 _ 、 numeric _ expression 。

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

반올림하지 않고 잘라낼 수 있었던 방법은 다음과 같습니다.

select 100.0019-(100.0019%.001)

100.0010을 반환한다.

예를 들어 다음과 같습니다.

select 123.456-(123.456%.001)

123.450을 반환한다.

엔딩 제로(Ending Zero)를 없애고 싶을 때는, 다음과 같이 캐스트 합니다.

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

123.45를 반환한다.

세 번째 매개 변수인 0, 1 또는 2가 무엇이든 간에 값은 반올림되지 않습니다.

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

소수점을 원하십니까, 원하십니까?

사용할 수 없는 경우는,

select ceiling(@value),floor(@value)

0으로 할 경우 라운드를 수행합니다.

select round(@value,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

라운드에는 옵션 파라미터가 있습니다.

Select round(123.456, 2, 1)  will = 123.45
Select round(123.456, 2, 0)  will = 123.46
ROUND(number, decimals, operation)

> .number = > number.할 수 .
소수점 => 필수입니다.
=>면 0이면 0으로반올림합니다.값이 0보다 크면 결과를 소수점 수로 잘라냅니다.은 0 입니다.

SELECT ROUND(235.415, 2, 1)

드립니다.235.410

SELECT ROUND(235.415, 0, 1)

드립니다.235.000

지금은 다듬고 있다.0 하면 .cast

SELECT CAST(ROUND(235.415, 0, 1) AS INT)

드립니다.235

이렇게 하면 모든 숫자의 소수점 부분이 제거됩니다.

SELECT ROUND(@val,0,1)
SELECT CAST(Value as Decimal(10,2)) FROM TABLE_NAME;

소수점 뒤에 2개의 값이 표시됩니다.(MS SQL SERVER)

또 다른 방법은 기능입니다.

DECLARE @value DECIMAL(18,3) =123.456;

SELECT @value AS val, {fn TRUNCATE(@value, 2)} AS result

LiveDemo

출력:

╔═════════╦═════════╗
║   val   ║ result  ║
╠═════════╬═════════╣
║ 123,456 ║ 123,450 ║
╚═════════╩═════════╝

비고:

빌트인 사용을 권장합니다.ROUND3번째 매개 변수를 1로 설정한 상태에서 기능을 수행합니다.

나는 이것이 꽤 늦은 것을 알지만 나는 그것이 해답이라고 생각하지 않고 몇 년 동안 이 속임수를 사용해 왔다.

값에서 .005를 빼고 Round(@num,2)를 사용합니다.

예:

declare @num decimal(9,5) = 123.456

select round(@num-.005,2)

123.45를 반환한다.

그러면 반올림이 자동으로 원하는 값으로 조정됩니다.

그나저나, 당신은 영화 오피스 스페이스에서 프로그램을 재작성하는 건가요?

다음과 같이 시도합니다.

SELECT cast(round(123.456,2,1) as decimal(18,2)) 

만약 당신이 어떤 번호를 받고 싶다면89.0904987로 바꿔서89.09원하는 소수 자릿수를 생략하면 다음 항목을 사용할 수 있습니다.

select cast(yourColumnName as decimal(18,2))

다음 스크린샷은 W3Schools SQL Data Types 섹션에서 가져온 것입니다.이 섹션은 다음을 설명합니다.decimal(18,2)다음 작업을 수행합니다.

스크린샷은 https://www.w3schools.com/sql/sql_datatypes.asp

그러므로,

select cast(89.0904987 as decimal(18,2))

다음과 같은 기능을 제공합니다.89.09

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

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

select @val

출력은 123.46 입니다.

10진수 값만 원하는 것 같은데, 이 경우 다음을 사용할 수 있습니다.

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

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

나는 이 질문이 매우 오래되었다는 것을 알지만, 아무도 반올림하기 위해 하위 문자열을 사용하지 않았다.이렇게 하면 매우 긴 숫자를 반올림할 수 있습니다(SQL 서버 문자열의 제한은 보통 8000자입니다).

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

Hackerlank에서 찾을 수 있는 간단한 솔루션 예시로 훨씬 더 쉽게 진행할 수 있을 것 같습니다.

문제 설명:STATION에서 137.2345보다 작은 North Latitude(LAT_N)의 최대값을 조회합니다.답을 소수점 이하 네 자리로 잘라라.

SELECT TRUNCATE(MAX(LAT_N),4)
FROM STATION
WHERE LAT_N < 137.23453;

위의 솔루션에서는 소수점 4개로 제한되는 값을 단순하게 만드는 방법을 설명합니다.소수점 이후 숫자를 줄이거나 높이려면 4를 원하는 대로 바꾸면 됩니다.

Mod(x,1)가장 쉬운 방법이라고 생각합니다.

select convert(int,@value)

언급URL : https://stackoverflow.com/questions/44046/truncate-not-round-decimal-places-in-sql-server