在 SQL 中,可以使用 DECIMAL 和 NUMERIC 数据类型来存储带小数点的数字。DECIMAL 和 NUMERIC 类似于 FLOAT 和 REAL 数据类型,但由于它们使用固定精度和小数位数,因此具有更高的精度和可预测性。
DECIMAL
DECIMAL 数据类型用于存储具有固定精度和小数位数的十进制数。精度指定数字中有效数字的总位数,包括小数点左右两边的数字。小数位数指定小数点右边数字的位数。
例如,以下语句创建一个名为 "price" 的 DECIMAL 列,具有 10 位精度和 2 位小数:
sql
CREATE TABLE products (
price DECIMAL(10, 2)
);
NUMERIC
NUMERIC 数据类型与 DECIMAL 类似,但语法略有不同。它也用于存储具有固定精度和小数位数的十进制数。
以下语句创建一个名为 "amount" 的 NUMERIC 列,具有 15 位精度和 4 位小数:
sql
CREATE TABLE orders (
amount NUMERIC(15, 4)
);
获取小数点以后的值
要获取 DECIMAL 或 NUMERIC 值的小数点以后的部分,可以使用 SUBSTR() 函数。SUBSTR() 函数允许您从字符串中提取一个子字符串,指定起始位置和长度。
例如,以下查询获取 "price" 列的小数点以后的部分:
sql
SELECT SUBSTR(price, INSTR(price, '.') + 1)
FROM products;
其他注意事项
请注意,DECIMAL 和 NUMERIC 值在存储时不会四舍五入。因此,获取小数点以后的部分时可能会出现舍入误差。
此外,在对 DECIMAL 或 NUMERIC 值进行算术运算时,所得值的精度可能与运算数的精度不同。因此,在进行算术运算之前,务必考虑所需的精度。