PostgreSQL NUMERIC 数据类型

PostgreSQL NUMERIC 数据类型NUMERIC 类型能存储大数据量的数值 通常 NUMERIC 类型用于需要精确性的数字 如货币数量或度量 本文介绍 NUMERIC 并通过示例学习它的特性 介绍 NUMERICNUMER 类型的语法 NUMERIC precision scale precision 表示整个数据长度 scale 表示小数部分的长度 如 1234 567 precision 为 7 scale 为 3 NUMERIC 类型在小数点前面长度可达到 131 072 小数点后面长度可达到 16 38

NUMERIC 类型能存储大数据量的数值。通常NUMERIC类型用于需要精确性的数字,如货币数量或度量。本文介绍 NUMERIC ,并通过示例学习它的特性。

介绍 NUMERIC

NUMERIC类型的语法:

NUMERIC(precision, scale) 

precision 表示整个数据长度,scale 表示小数部分的长度。如: 1234.567 ,precision 为 7 ,scale 为 3.

NUMERIC 类型 在小数点前面长度可达到 131,072 ,小数点后面长度可达到 16,383。scale 可以为0 或正数,下面示例表示 scale 为 0:

NUMERIC(precision) 

如果 precision 和 scale 都忽略,则可以存储 任何上面提及限制内的长度和精度。

NUMERIC 

在 PostgreSQL中 NUMERICDECIMAL 是等价的,两者都是SQL标准的一部分。如果精度不是必须的,则不应选择 NUMBER,因为计算 NUMBER 要 比 integer ,float ,double 慢。

示例

下面看一些示例。

  1. 存储数值

    如果您存储的值的精度大于NUMERIC列声明时置顶的精度,PostgreSQL将把该值四舍五入到指定的小数位数。我们看示例:

    CREATE TABLE products ( id SERIAL PRIMARY KEY, name VARCHAR(100) NOT NULL, price NUMERIC(5,2) ); 

    然后插入示例记录:

    INSERT INTO products (name, price) VALUES ('Phone',500.215), ('Tablet',500.214); 

    我们声明时 price 的scale 为 2, 但给的值小数部分为 3 ,因此会四舍五入:

    SELECT * FROM products; 

    返回结果:

    id name price
    1 Phone 500.22
    2 Tablet 500.21

    如果给的值超过声明时的precision 长度,POSTGRESQL会报错:

    INSERT INTO products (name, price) VALUES('Phone',.21); 
  2. 数值类型与NaN

除了存储数值外,还可以存储特殊的值 NaN,它表示不是数值。请看示例:

UPDATE products SET price = 'NaN' WHERE id = 1; 

注意,NaN的值在update 中必须使用 单引号包裹。展示结果:

 SELECT * FROM products; 

返回结果:

id name price
2 Tablet 500.21
1 Phone NaN

注意 NaN 不等于任何数值,包括它自身,也就是说,表达式 NaN = NaN 为 fasle。然而,当排序时两个NaN值相等,NaN比其他数大。PostgreSQL在基于树的索引中使用它们进行排序。

SELECT * FROM products ORDER BY price DESC; 
id name price
1 Phone NaN
2 Tablet 500.21

我们看到,NaN500.21 大。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/212836.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午7:09
下一篇 2026年3月18日 下午7:09


相关推荐

  • PHP文件锁

    PHP文件锁一、文件锁是什么?    顾名思义,对文件上锁。    可以通过“进门”的实际情况来理解:    有多个人要通过一个大门到食堂里吃饭,但食堂只有一个座位。     食堂管理员A有点偷懒,不想等那么久,于是就告诉大家,中午都可以来食堂吃饭,但是要跑快点才行,只有一个座位,第一个到的人就可以在食堂吃饭,然后就会锁门,其他人看到门锁上了就哪来的回哪去吧,这…

    2022年6月28日
    28
  • 项目从 tomcat7部署到tomcat8「建议收藏」

    项目从 tomcat7部署到tomcat8「建议收藏」这段时间将一个老项目从tomcat7部署到tomcat8上,期间遇到的典型问题。接下来我会介绍下整个升级过程和在升级中遇到的问题。首先要装个jdk8+,因为开发环境用的是eclipse,还要搞个兼容tomcat8的eclipse.新下的tomcat8里是自带20几个jar的,这是要留着的不能直接拿来tomcat7的lib就用。因为老项目要依赖的jar都放在了tomcat下没有用maven,所以拿来…

    2022年7月18日
    29
  • 前端学到什么程度可以找到工作(应届毕业生有什么优势)

    目录1.前端开发下载安装VScode优化配置2、插件安装3、设置字体大小4、开启完整的Emmet语法支持5、视图2.Node.js入门2.1、什么是Node.js2.2、Node.js有什么用2.3、安装下载:2.4、快速入门2.5、服务器端应用开发3、ES6入门3.2、let声明变量3.3、const声明常量3.4、解构赋值创建3.5、模板字符串创建3.6、声明对象简写创建3.7、定义方法简写3.8、对象拓展

    2022年4月16日
    50
  • ABAP开发总结

    ABAP开发总结一 RANGE 使用注意事项 1 range 语句在 SQL 中一般用 IN 不用等于 2 EQ 等于 LE 小于等于 GE 大于等于 3 使用前清空表头和表体 CLEAR emp emp 单值 CLEARG ranges G ranges sign I

    2026年3月26日
    3
  • PKU A Simple Problem with Integers (段树更新间隔总和)

    PKU A Simple Problem with Integers (段树更新间隔总和)

    2022年1月5日
    40
  • delay函数的用法及声明

    delay函数的用法及声明在VC中使用带上头文件#include注意:在VC中Sleep中的第一个英文字符为大写的”S”在标准C中是sleep,不要大写..下面使用大写的来说明,,具体用什么看你用什么编译器.简单的说VC用Sleep,别的一律使用sleep.Sleep函数的一般形式:Sleep(unisgnedlong);其中,Sleep()里面的单位,是以毫秒为单位

    2022年6月2日
    63

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号