 |
|
SQL Server Tips by Burleson |
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)
SET @d=12345.67
SELECT @d, DATALENGTH(@d)
SELECT CAST(@d as binary(8))
12345.670 5
0x080300014661BC00
Internally, the variable needs three more bytes to store extra data
plus the five for the data:
1-Precision.
2-Scale.
3-00.
4-sign, 00 for negative and 01 for positive numbers.
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:
Super SQL
Server Systems
Turbocharge Database Performance with C++ External Procedures
ISBN:
0-9761573-2-2
Joseph Gama, P. J. Naughter
http://www.rampant-books.com/book_2005_2_sql_server_external_procedures.htm |