Czy jest jakaś różnica między dziesiętnym a liczbowym w SQL Server?

Czy jest jakaś różnica między dziesiętnymi i liczbowymi typami danych w SQL Server?

Kiedy należy używać dziesiętnych, a kiedy numerycznych?

Author: a_horse_with_no_name, 2009-04-17

6 answers

Są takie same. Numeryczny jest funkcjonalnie równoważny dziesiętnemu.

MSDN: dziesiętne i numeryczne

 99
Author: Guffa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-23 08:14:17

Oto, co standard Sql2003 (§6.1 typy danych) mówi o dwóch:

 <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>.
 39
Author: Joakim Backman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-17 08:49:08

Według mojej wiedzy nie ma różnicy między typami danych liczbowych i dziesiętnych. Są one dla siebie synonimami i można z nich korzystać. Dziesiętne i numeryczne typy danych są numerycznymi typami danych o stałej precyzji i skali.

Edit:

Mówiąc do kilku kolegów może its ma coś wspólnego z tym, że DECIMAL jest standardem ANSI SQL, a NUMERIC jest jednym z bardziej popularnych języków programowania. ...Może ;)

 10
Author: kevchadders,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-17 08:00:28

Odpowiedź Joakima Backmana jest konkretna, ale może to przynieść dodatkową jasność.

Jest niewielka różnica. Jak na SQL For Dummies, 8th Edition (2013):

Typ danych dziesiętnych jest podobny do liczbowego. ... Różnica jest że Twoja implementacja może określić precyzję większą niż to, co określ - jeśli tak, to implementacja wykorzystuje większą precyzję. Jeśli nie określa dokładności ani skali, implementacja używa domyślnego wartości, jak to robi z typem numerycznym.

Wydaje się, że różnica w niektórych implementacjach SQL polega na integralności danych. DECIMAL pozwala na przepełnienie z tego, co jest zdefiniowane na podstawie niektórych domyślnych systemów, gdzie jako liczbowe nie.

 1
Author: Alex Firsov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-26 20:52:02

To synonimy, bez różnicy.Dziesiętne i numeryczne typy danych są numerycznymi typami danych o stałej precyzji i skali.

-- Initialize a variable, give it a data type and an initial value

declare @myvar as decimal(18,8) or numeric(18,8)----- 9 bytes needed

-- Increse that the vaue by 1

set @myvar = 123456.7

--Retrieve that value

select @myvar as myVariable
 0
Author: Raman Grewal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-17 22:18:26

Są dokładnie takie same. Kiedy go używasz, bądź konsekwentny. Użyj jednego z nich w bazie danych

 -2
Author: Faruk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-05 15:28:43