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)
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 진수 진수합니다.
'ProgramingTip' 카테고리의 다른 글
Thread.Abort () 사용시 문제 (0) | 2020.11.27 |
---|---|
C # RegEx : 대소 문자 무시… 패턴? (0) | 2020.11.27 |
.Net에서 개발 한 Windows 서비스 설치 오류 (0) | 2020.11.27 |
목록 항목에서 글 머리 기호와 텍스트 사이의 간격 (0) | 2020.11.27 |
WPF TextBlock에 명령을 추가하는 방법은 무엇입니까? (0) | 2020.11.26 |