||SQL Server Tips by Gama and Naughter
Decimal and numeric
Both names mean the same. The
statement decimal (p, s) with p as precision and s as scale
represents a decimal number with up to p digits and s of them will
be on the right of the decimal point.
DECLARE @d decimal(8, 3)
SELECT @d, DATALENGTH(@d)
SELECT CAST(@d as binary(8))
Internally, the variable needs
three more bytes to store extra data plus the five for the data:
4-sign, 00 for negative and 01 for
5 to 8-value 4661BC00
4661BC00 reversed is 00BC6146,
that is, 12345670 in decimal. With a scale three, it becomes
12345.670, this is how decimals are stored.
The maximum precision goes from
-10^38 +1 through 10^38 –1.
The above book excerpt is from:
Turbocharge Database Performance with C++ External Procedures
Joseph Gama, P. J. Naughter