반응형
백분율 값을 유지하기 위한 적절한 데이터 유형?
0.00% ~ 100.00% 범위의 백분율 값을 유지하는 데 가장 적합한 데이터 유형은 무엇입니까?
백분율에 소수점 두 자리가 있다고 가정하면 사용하는 데이터 유형은 백분율을 저장하는 방법에 따라 달라집니다.
- 그들의 분수 등가물(예: 100.00%가 1.0000으로 저장됨)을 저장할 경우, 나는 데이터를 다음과 같이 저장할 것입니다.
decimal(5,4)
데이터 유형(aCHECK
값이 1.0000(상한)을 초과하지 않고 0(바닥) 아래로 떨어지지 않도록 하는 제약 조건. - 얼굴 값을 저장하려면(예: 100.00%가 100.00으로 저장됨) 다음을 사용해야 합니다.
decimal(5,2)
적절한CHECK
속박
좋은 열 이름과 결합하여 다른 개발자에게 데이터가 무엇인지, 데이터가 열에 저장되는 방식을 명확하게 합니다.
- 로 보관
decimal
. - 범위를 제한하려는 경우(예: 0 - 100%, 경우에 따라 100%를 초과하거나 잠재적으로 음의 값까지 포함해야 하는 타당한 이유가 있을 수 있음) 체크 제약 조건을 추가합니다.
- 값 1을 100%, 0.5를 50% 등으로 처리합니다.이렇게 하면 모든 산술 연산이 예상대로 작동할 수 있습니다(값 100을 100%로 사용하는 것과 반대).
- 필요에 따라 정밀도 및 스케일 조정(괄호 안에 있는 두 값)
columnName decimal(precision, scale)
Precision은 숫자에 포함될 수 있는 총 자릿수를 말합니다. 척도는 소수점 다음에 있는 자릿수를 나타냅니다.decimal(3,2)
로 나타낼 수 있는 숫자입니다.#.##
;decimal(5,3)
되지요##.###
. decimal
그리고.numeric
본질적으로 같은 것입니다.하지만decimal
ANSI를 준수하므로 별도의 지시가 없는 한 항상 사용하십시오(예: 회사의 코딩 표준).
예제 시나리오
- 당신의 경우(0.00% ~ 100.00%) 당신이 원하는 경우
decimal(5,4)
. - 가장 일반적인 경우(0% ~ 100%)에 대해 원하는 경우
decimal(3,2)
. - 위의 두 가지에서, 검사 제약 조건은 동일합니다.
예:
if object_id('Demo') is null
create table Demo
(
Id bigint not null identity(1,1) constraint pk_Demo primary key
, Name nvarchar(256) not null constraint uk_Demo unique
, SomePercentValue decimal(3,2) constraint chk_Demo_SomePercentValue check (SomePercentValue between 0 and 1)
, SomePrecisionPercentValue decimal(5,2) constraint chk_Demo_SomePrecisionPercentValue check (SomePrecisionPercentValue between 0 and 1)
)
추가 읽기:
- 십진법 척도 및 정밀도: http://msdn.microsoft.com/en-us/library/aa258832%28SQL.80%29.aspx
0 to 1
대0 to 100
C#: 50 또는 0.50의 비율을 저장하고 있습니까?- 십진수 대 숫자:SQL Server에서 DECTION과 NUMICAL의 차이점이 있습니까?
저는 Thomas의 의견에 동의하며 적어도 WPF 애플리케이션에 대해서는 DECIMAL(5,4) 솔루션을 선택할 것입니다.
MSDN 숫자 형식 문자열을 보고 이유를 확인하십시오. http://msdn.microsoft.com/en-us/library/dwhawy9k#PFormatString
백분율("P") 형식 지정자는 숫자에 100을 곱하여 백분율을 나타내는 문자열로 변환합니다.
그러면 XAML 코드에서 다음을 사용할 수 있습니다.
DataFormatString="{}{0:P}"
소수점 이하 두 자리가 정밀도 수준이면 "smallint"는 가장 작은 공간(2바이트)에서 이를 처리합니다.백분율에 100을 곱한 값을 저장합니다.
편집: 십진수 유형이 더 적합할 수 있습니다.그러면 수동으로 확장할 필요가 없습니다.값당 5바이트가 필요합니다.
n의 분해능이 1.00으로 반올림하기에 충분한 경우 숫자(n,n)를 사용합니다.예를 들어:
declare @discount numeric(9,9)
, @quantity int
select @discount = 0.999999999
, @quantity = 10000
select convert(money, @discount * @quantity)
언급URL : https://stackoverflow.com/questions/2762302/appropriate-datatype-for-holding-percent-values
반응형
'source' 카테고리의 다른 글
사용자 입력 및 명령줄 인수 (0) | 2023.05.07 |
---|---|
폴더 자체가 아닌 폴더의 모든 파일/폴더를 무시하는 방법은 무엇입니까? (0) | 2023.05.07 |
시스템에 실행 파일이 없을 때 Windows 서비스를 제거하는 방법은 무엇입니까? (0) | 2023.05.07 |
파이썬에서 파일이나 폴더를 삭제하려면 어떻게 해야 합니까? (0) | 2023.05.07 |
ASP에서 작업의 전체 URL을 가져오는 중입니다.NET MVC (0) | 2023.05.07 |