SQL之DECIMAL函数
DECIMAL 数据类型
DECIMAL 数据类型是总位数为 precision 且⼩数点后位数为 scale 的⼩数。
[折叠/展开部分] 语法
DECIMAL [ ( precision [ , scale ] ) ]
[折叠/展开部分] 参数
precision  ⼀个在 1 到 127 范围内(含 1 和 127)的整数表达式,指定表达式中的位数。缺省设置为 30。
decimal是整数数据类型scale  ⼀个在 0 到 127 范围内(含 1 和 127)的整数表达式,指定⼩数点后的位数。⼩数位数值应始终⼩于或等于精度值。缺省设置为 6。
可以通过设置数据库选项更改缺省值。
[折叠/展开部分] 注释
DECIMAL 数据类型是精确数字数据类型,其精度在算术运算后保留到最⼩有效位。
存储⼩数所需的空间可通过如下⽅式计算
2 + int( (before + 1)/2 ) + int( (after + 1)/2 )
函数 int ⽤于将其参数取整,⽽ before 和 after 分别是⼩数点之前和之后的有效位数。存储基于的是所存储的值,⽽不是列中允许的最⼤精度和⼩数位数。
也可以将 DECIMAL 指定为 DEC。⽆论使⽤哪种语法,都会将数据类型描述为 DECIMAL。
如果正在使⽤的精度是 20 或更少,正在使⽤的⼩数位数是 0,则可以改⽤整数数据类型(BIGINT、INTEGER、SMALLINT 或TINYINT)之⼀。与具有类似有效位数的 NUMERIC 和 DECIMAL 值相⽐,整数值需要较少的存储空间。对整数值(例如读取或插⼊)和算术运算符执⾏的操作,通常优于对 NUMERIC 和 DECIMAL 值执⾏的操作。
DECIMAL 在语义上等同于 NUMERIC。
注意:如果创建 DECIMAL 数据类型的列或变量,⽽且其精度或⼩数位数超过为数据库设置的精度和⼩数位数,则会按照数据库设置截断这些值。因此,如果发现在定义为 DECIMAL 的列或变量中的值被截断,需检查精度和⼩数位数使其不超过数据库选项设置。