Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.
NUMERIC 数据类型用于存储总位数为 precision 且小数点后位数为 scale 的小数。
NUMERIC [ ( precision [ , scale ] ) ]
precision 一个在 1 到 127 范围内(含 1 和 127)的整数表达式,指定表达式中的位数。缺省设置为 30。
scale 一个在 0 到 127 范围内(含 1 和 127)的整数表达式,指定小数点后的位数。小数位数值应始终小于或等于精度值。缺省设置为 6。
NUMERIC 数据类型是一种精确数字数据类型,其精度在算术运算后保留到最小有效位。
存储小数所需的字节数可通过如下方式计算
2 + INT( (BEFORE+1)/2 ) + INT( (AFTER+1)/2 )
INT 函数用于将其参数取整,而 BEFORE 和 AFTER 分别是小数点之前和之后的有效数字位数。存储基于的是所存储的值,而不是列中允许的最大精度和小数位数。
如果正在使用的精度是 20 或更少,正在使用的小数位数是 0,则可以改用整数数据类型(BIGINT、INTEGER、SMALLINT 或 TINYINT)之一。与具有类似有效位数的 NUMERIC 和 DECIMAL 值相比,整数值需要较少的存储空间。对整数值(例如读取或插入)和算术运算符执行的操作,通常优于对 NUMERIC 和 DECIMAL 值执行的操作。
NUMERIC 在语义上等同于 DECIMAL。
如果创建 NUMERIC 数据类型的列或变量,而且其精度或小数位数超过为数据库设置的精度和小数位数,则会按照数据库设置截断这些值。因此,如果发现在定义为 NUMERIC 的列或变量中的值被截断,需检查精度和小数位数使其不超过数据库选项设置。
SQL/2008 如果 scale 选项设置为零,则与 SQL/2008 兼容。