¿Hay alguna diferencia entre DECIMAL y NUMÉRICO en SQL Server?


¿Hay alguna diferencia entre los tipos de datos DECIMALES y NUMÉRICOS en SQL Server?

¿Cuándo debo usar DECIMAL y cuándo NUMÉRICO?

Author: a_horse_with_no_name, 2009-04-17

6 answers

Son lo mismo. Numérico es funcionalmente equivalente a decimal.

MSDN: decimal y numérico

 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/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-08-23 08:14:17

Esto es lo que dice el estándar SQL2003 (§6.1 Tipos de datos) sobre los dos:

 <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/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-04-17 08:49:08

Que yo sepa no hay diferencia entre los tipos de datos NUMÉRICOS y DECIMALES. Son sinónimos entre sí y cualquiera de ellos puede ser utilizado. Los tipos de datos DECIMALES y NUMÉRICOS son tipos de datos numéricos con precisión y escala fijas.

Editar:

Hablando con algunos colegas tal vez su tiene algo que ver con DECIMAL es el estándar ANSI SQL y NUMÉRICO es uno Mircosoft prefiere como su más comúnmente encontrado en lenguajes de programación. ...Tal vez ;)

 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/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-04-17 08:00:28

La respuesta de Joakim Backman es específica, pero esto puede aportar claridad adicional.

Hay una pequeña diferencia. Según SQL For Dummies, 8a Edición (2013):

El tipo de datos DECIMAL es similar al NUMÉRICO. ... La diferencia es que su implementación puede especificar una precisión mayor que la que usted specify-si es así, la implementación utiliza la mayor precisión. Si no especifique precisión o escala, la implementación utiliza por defecto valores, como lo hace con el tipo NUMÉRICO.

Parece que la diferencia en algunas implementaciones de SQL está en la integridad de los datos. DECIMAL permite el desbordamiento de lo que se define en función de algunos valores predeterminados del sistema, donde como NUMÉRICO no lo hace.

 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/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-08-26 20:52:02

Son sinónimos, ninguna diferencia en absoluto.Los tipos de datos decimales y numéricos son tipos de datos numéricos con precisión y escala fijas.

-- 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/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-08-17 22:18:26

Son exactamente iguales. Cuando lo uses, sé consistente. Utilice uno de ellos en su base de datos

 -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/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-09-05 15:28:43