¿Hay alguna diferencia entre DECIMAL y NUMERIC en SQL Server?

¿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:

   ::= NUMERIC [   [   ]  ] | DECIMAL [   [   ]  ] | DEC [   [   ]  ] | SMALLINT | INTEGER | INT | BIGINT ... 21) NUMERIC specifies the data type exact numeric, with the decimal precision and scale specified by the  and . 22) DECIMAL specifies the data type exact numeric, with the decimal scale specified by the  and the implementation-defined decimal precision equal to or greater than the value of the specified . 

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 progtwigción. …Tal vez 😉

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.

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 

Son exactamente lo mismo. Cuando lo use, sea consistente. Use uno de ellos en su base de datos