money - ¿Hay alguna diferencia entre DECIMAL y NUMERIC en SQL Server?
sql server decimal format (5)
¿Hay alguna diferencia entre los tipos de datos DECIMAL y NUMERIC en SQL Server?
¿Cuándo debería usar DECIMAL y cuándo NUMERIC?
Ellos son lo mismo. Numérico es funcionalmente equivalente a decimal.
MSDN: decimal y numérico
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>.
La respuesta de Joakim Backman es específica, pero esto puede brindarle mayor claridad.
Hay una pequeña diferencia. Según SQL For Dummies, 8ª Edición (2013):
El tipo de datos DECIMAL es similar a NUMERIC. ... La diferencia es que su implementación puede especificar una precisión mayor que la especificada; de ser así, la implementación utiliza la mayor precisión. Si no especifica precisión o escala, la implementación usa valores predeterminados, como lo hace con el tipo NÚMERO.
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, mientras que NUMERIC no lo hace.
Que yo sepa, no hay diferencia entre los tipos de datos NUMÉRICOS y DECIMALES. Son sinónimos entre sí y cualquiera de ellos se puede usar. Los tipos de datos DECIMAL y NUMERIC son tipos de datos numéricos con precisión y escala fija.
Editar:
Hablar con algunos colegas tal vez tiene algo que ver con que DECIMAL es el estándar ANSI SQL y NUMERIC es uno que Mircosoft prefiere ya que se encuentra más comúnmente en los lenguajes de programación. ...Tal vez ;)
Son sinónimos, no hay diferencia en absoluto. Los tipos de datos numéricos 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