소수점 이하 두 자리 SQL Server로 숫자 쓰기


답변:


213

이 시도

SELECT CONVERT(DECIMAL(10,2),YOURCOLUMN)

2
이것이 10 년 전의 대답이라면 더 이상은 아닙니다. 이 방법은 10.11111을 10.00으로 바꿉니다.
Jonathon Cowley-Thom

나는 SELECT CONVERT (DECIMAL (10,2), 10.11111)를 시도했지만 SELECT CONVERT (DECIMAL (10,2), '10.11111')에 대해 10.11과 동일한 결과를 반환했습니다. Sql Server 2008 R2
SKCS Kamal

70

Str()기능을 사용하십시오 . 세 개의 인수 (수, 표시 할 총 문자 수 및 표시 할 소수 자릿수)가 필요합니다.

  Select Str(12345.6789, 12, 3)

표시 : '12345.679'(3 칸, 5 자리 12345, 소수점 및 3 자리 소수점 679)-정수 부분이 전체 크기에 비해 너무 크지 않은 경우 잘 리면 반올림됩니다. 별표가 대신 표시됩니다.)

소수점 오른쪽에 3이있는 총 12 자입니다.


1
it rounds if it has to truncate... 정수 부분이 전체 크기에 비해 너무 크지 않은 경우 별표가 대신 표시됩니다. 이에 대한 설명서에STR 언급되어 있습니다. 그 페이지에서 인용 한 것이 있습니다 :STR(1223,2) truncates the result set to **.
Mark Byers

36

일반적으로 매개 변수로 숫자를 정의하여 SQL에서 숫자의 정밀도를 정의 할 수 있습니다. 대부분의 경우이 값은 NUMERIC(10,2)또는 Decimal(10,2)-열을 10의 전체 자릿수 (정밀도 2 (소수 자릿수))로 정의합니다.

명확성을 위해 편집


4
DECIMAL (10, 2)로 선언 할 수도 있습니다.
jrcs3

10
여러 가지 이유로 잘못되었습니다. 숫자가 아니고 숫자 또는 10 진수입니다. numeric (10,2)은 소수점 앞에 10 자리를 허용하지만 잘못되었습니다. numeric (10,2)은 소수점 다음에 2 자리가있는 10 개의 총 자릿수를 허용합니다. 범위 = -99999999.99 ~ 99999999.99
George Mastros 2018 년

@G Mastros : 정확한 지점에있는 것 같습니다. 컨벤션의 실제 이름 지정에서 많은 SQL 구현에서 NUMBER는 유효한 유형입니다. 비록 sqlserver의 경우를 알지 못한다는 것을 인정하지만
AAA

@GMastros도 같은 말을하게되었습니다. msdn.microsoft.com/ko-kr/library/aa258832%28v=sql.80%29.aspx
Joe

19

이것은 나를 위해 일하고 항상 두 자리 분수를 유지합니다

23.1 ==> 23.10

25.569 ==> 25.56

1 ==> 1.00

Cast(CONVERT(DECIMAL(10,2),Value1) as nvarchar) AS Value2

코드 스크린 샷


2
위의 Charles Bretana의 STR () 함수를 사용해보십시오. 수식처럼 작동하지만 25.569 예제에서는 반올림합니다.
JerryOL

15

이것이 오늘날 아이들이하는 일입니다.

DECLARE @test DECIMAL(18,6) = 123.456789
SELECT FORMAT(@test, '##.##')

123.46


1
FORMAT 기능은 2012 버전부터 사용할 수 있습니다.
user1263981

또는 : SELECT FORMAT (@test, '. ##')
java-love

입력 데이터가 DECLARE @test DECIMAL(18,6) = 0.456789 다음과 같으면 다음을 SELECT FORMAT(@test, '##.##')반환합니다. .46 선행 0을 어떻게 표시 0.46합니까?
luisdev

선행 0을 얻으려면 SELECT FORMAT (@test, '# 0. ##')
ClubbieTim

14

소수점 이하 두 자리 만 필요한 경우 가장 간단한 방법은 ..

SELECT CAST(12 AS DECIMAL(16,2))

또는

SELECT CAST('12' AS DECIMAL(16,2))

산출

12.00

7

숫자를 자르지 않고 반올림 하면 괜찮습니다 .

ROUND(column_name,decimals)

2

이 시도:

 declare @MyFloatVal float;

    set @MyFloatVal=(select convert(decimal(10, 2), 10.254000))

    select  @MyFloatVal

    Convert(decimal(18,2),r.AdditionAmount) as AdditionAmount

0

삽입 할 값 (예 : 2.99)에 100을 곱하십시오

그런 다음 .01을 끝에 추가하여 결과의 ​​100으로 나누기를 삽입하십시오.

299.01/100

0

이것은 소수점 다음에 2 개의 값으로 총 10 자리를 허용합니다. 이는 소수점 이하 8 자리, 소수점 이하 2까지의 값을 수용 할 수 있음을 의미합니다.

유효성을 검사하려면 다음 쿼리에 값을 입력하십시오.

DECLARE vtest  number(10,2);
BEGIN
SELECT 10.008 INTO vtest FROM dual;
dbms_output.put_line(vtest);
END;
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.