답변:
그들은 동일합니다. 숫자는 기능적으로 소수와 같습니다.
MSDN : 10 진수 및 숫자
decimal
입니다 정확히 동안 선언 한 정확한 numeric
입니다 적어도 선언 정확한한다. SQL Server에서는 둘 다 선언 된대로 정확합니다. 즉 numeric
표준에서 허용 하는 유연성을 사용하지 않습니다 .
Column '<referencedColumn>' is not the same data type as referencing column '<parentTable>.<parentColumn>' in foreign key '<yourKeyName>'
합니다. 모두 NUMERIC (x, y) 또는 DECIMAL (x, y)
decimal
이고 적어도 반면 선언 등으로 정밀 numeric
하다 정확히 선언 정확한한다.
이것이 바로 SQL2003 표준 (6.16.1 데이터 형식)이 두 가지에 대해 말한 것입니다.
<exact numeric type> ::=
NUMERIC [ <left paren> <precision> [ <comma> <scale> ] <right paren> ]
| DECIMAL [ <left paren> <precision> [ <comma> <scale> ] <right paren> ]
| DEC [ <left paren> <precision> [ <comma> <scale> ] <right paren> ]
| SMALLINT
| INTEGER
| INT
| BIGINT
...
21) NUMERIC specifies the data type
exact numeric, with the decimal
precision and scale specified by the
<precision> and <scale>.
22) DECIMAL specifies the data type
exact numeric, with the decimal scale
specified by the <scale> and the
implementation-defined decimal
precision equal to or greater than the
value of the specified <precision>.
내 지식으로는 NUMERIC과 DECIMAL 데이터 유형 사이에는 차이가 없습니다. 그들은 서로 동의어이며 둘 중 하나를 사용할 수 있습니다. DECIMAL 및 NUMERIC 데이터 유형은 고정밀도 및 스케일을 가진 숫자 데이터 유형입니다.
편집하다:
몇몇 동료들과 이야기하는 것은 아마도 DECIMAL이 ANSI SQL 표준이고 NUMERIC이 프로그래밍 언어에서 더 일반적으로 발견되는 것과 같은 Mircosoft가 선호하는 것과 관련이 있습니다. ...아마도 ;)
Joakim Backman의 답변은 구체적이지만 더 명확 할 수 있습니다.
약간의 차이가 있습니다. SQL For Dummies, 8 판 (2013)에 따라 :
DECIMAL 데이터 유형은 NUMERIC과 유사합니다. ... 차이점은 구현시 사용자가 지정한 것보다 더 큰 정밀도를 지정할 수 있다는 것입니다. 그렇다면 구현시 더 큰 정밀도를 사용합니다. 정밀도 또는 스케일을 지정하지 않으면 구현은 NUMERIC 유형과 마찬가지로 기본값을 사용합니다.
일부 SQL 구현의 차이점 은 데이터 무결성 에있는 것 같습니다 . DECIMAL은 NUMERIC이 아닌 일부 시스템 기본값을 기반으로 정의 된 것에서 오버플로를 허용합니다.