ProgramingTip

SQL-Server에 백분율 값을 저장하는 가장 좋은 방법은 무엇입니까?

bestdevel 2020. 11. 27. 21:04
반응형

SQL-Server에 백분율 값을 저장하는 가장 좋은 방법은 무엇입니까?


SQL 서버에 백분율을 저장하고 싶습니다. 선호하는 데이터 유형은 무엇입니까?


십진수 (p, s) 및 숫자 (p, s)

p (정밀도) :

저장 될 최대 소수점 자릿수 (소수점의 왼쪽과 오른쪽 모두)


s (스케일) :

소수점 오른쪽에 저장 될 소수점 자릿수 (-> s는 소수점 자릿수를 정의 함)


0 <= 초 <= p.

  • p ... 총 자릿수
  • s ... 소수점 오른쪽의 자릿수
  • ps ... 소수점 왼쪽의 자릿수

예 :

CREATE TABLE dbo.MyTable
( MyDecimalColumn decimal(5,2)
 ,MyNumericColumn numeric(10,5)
);

INSERT INTO dbo.MyTable VALUES (123, 12345.12);

SELECT MyDecimalColumn, MyNumericColumn FROM dbo.MyTable;

결과 :

MyDecimalColumn: 123.00 (p=5, s=2)

MyNumericColumn: 12345.12000 (p=10, s=5)

링크 : msdn.microsoft.com


99.9 %의 경우 십진수 (p, s)사용합니다 .

백분율은 프레젠테이션 개념 일뿐입니다. 10 %는 여전히 0.1입니다.

실수로 표현할 때 가장 높은 기대되는 값 / 원하는 소수점 자리에 대한 것입니다. 100 % 미만의 값에 대해 p = s를 기준으로 할 수 있습니다.

그러나 100 % 또는 1을 저장해야하는 경우 p = s + 1이 필요합니다.

최대 9.xxxxxx 또는 9xx.xxxx %가 허용되는 것이 허용되는 검사가 필요한 경우 최대 1을 제약 조건을 추가합니다.


동의합니다. DECIMAL은 이러한 유형의 번호를 저장해야하는 곳입니다. 그러나 결정을 더 생각보다 100의 백분율이 아닌 1의 백분율로 저장하십시오. 이렇게하면 "전체"숫자에 관계없이 필요한 소수 자릿수를 사용할 수 있습니다. 따라서 소수점 6 자리를 원하면 DECIMAL (9, 8)을 사용하고 23.3436435 %의 경우 0.23346435를 저장합니다. 23.346435 %로 변경하는 것은 대부분의 프레젠테이션 언어 / 보고서 작성자 등이 표시를 사용합니다.


S는 백분율 능력을 나타내는 반면 진수를 (P, S) 사용해야 한다고 생각 합니다. 1 개의 바이트가 될 수도 있습니다. 따라서 p는 최소한 s + 1이어야합니다. 1000 %까지 저장하십시오. 그러나 SQL은 'p'가 s보다 작은 것을 허용하지 않습니다.

예 : 28.2656579879 %는 10 진수 (13, 12) 처분하며 저장합니다. 00.282656579879 128.2656579879 %는 10 진수 (13, 12) 소유하며 01.282656579879로 저장되어야합니다.

28 %는 0.28로 10 진수 (3,2)로 저장되어야하며 128 %는 1.28로 10 진수 (3,2)로 저장되어야 함

참고 : 100 %에 도달하지 않을 것임을 알고있는 경우 (즉, 값이 항상 10 진수 (s, s)를 사용하는 것보다 100 % 미만일 것임을 알고있는 10 진수 (s + 1, s)을 사용하십시오.

기타


열의 데이터 유형은 10 진수 진수합니다.

참고 URL : https://stackoverflow.com/questions/1602318/what-should-be-the-best-way-to-store-a-percent-value-in-sql-server

반응형