codememo

SQL-Server에 퍼센트 값을 저장하는 가장 좋은 방법은 무엇입니까?

tipmemo 2023. 4. 18. 22:46
반응형

SQL-Server에 퍼센트 값을 저장하는 가장 좋은 방법은 무엇입니까?

SQL Server에 백분율을 나타내는 값을 저장하고 싶은데 어떤 데이터 유형을 선호해야 합니까?

99.9%의 경우 소수(p,s)사용해야 합니다.

퍼센트는 프레젠테이션의 개념일 뿐입니다.10%는 0.1입니다.

단순히 실수로 표현될 때 가장 높은 기대치/희망 소수 자릿수에 대한 정밀도와 척도를 선택합니다.100% 미만의 값에 대해 p = s를 가질 수 있으며 단순히 소수 자릿수를 기준으로 결정할 수 있습니다.

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

그러면 최대 9.xxxxx 또는 9xx.xx%가 허용되므로 필요한 경우 최대 1로 유지하도록 체크 제약 조건을 추가합니다.

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

p(표준):

저장되는 최대 십진수 자리 수(소수점 왼쪽과 오른쪽 모두)


s(척도):

소수점 오른쪽에 저장되는 소수 자릿수(-> s)는 소수 자릿수를 정의합니다.


0 <= s <= p.

  • p... 총 자릿수
  • s... 소수점 오른쪽에 있는 자릿수
  • p-s... 소수점 왼쪽에 있는 자릿수

예:

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

동의합니다. DIMAL은 이 유형의 숫자를 저장하는 곳입니다.그러나 결정을 쉽게 하기 위해 100의 백분율이 아닌 1의 백분율로 저장하십시오.그러면 전체 숫자에 관계없이 필요한 소수 자릿수를 정확하게 저장할 수 있습니다.따라서 소수점 6자리를 원하는 경우 DIMAL(9, 8)을 사용하고 23.3436435%의 경우 0.23346435를 저장합니다.23.346435%로 변경하는 것은 스토리지 문제가 아니라 디스플레이 문제이며, 대부분의 프레젠테이션 언어/리포트 작성자 등이 디스플레이를 변경할 수 있습니다.

10진수(p, s)를 사용해야 하며, s는 백분율 기능을 나타냅니다.포인트 왼쪽의 각 자릿수는 1 hunderd%이므로 1바이트를 초과할 필요가 없기 때문에 p는 짝수일 수 있습니다.따라서 최대 1000%까지 저장할 수 있으려면 p가 적어도 s+1이어야 합니다.단, SQL에서는 p가 s보다 작을 수 없습니다.

예: 28.26579879%는 10진수(13, 12)여야 하며 00.286579879 128.26579879%는 10진수(13, 12)여야 하며 01.286579879는 01.286579879로 저장해야 합니다.

0.28 128%는 1.28로 10진수(3,2)로 저장되므로 28%는 10진수(3,2)로 저장해야 합니다.

주의: 100%에 도달하지 않을 경우(즉, 값이 항상 소수점 사용보다 100% 미만임), 도달하려면 소수점(s+1, s)을 사용하십시오.

기타 등등

열의 데이터 형식은 10진수여야 합니다.

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

반응형