Postgresql数据类型-数据类型转换

news/2024/7/9 21:24:48 标签: postgresql, 数据库

PostgreSQL数据类型转换主要有三种方式:通过格式化函数、CAST函数、::操作符,下面分别介绍。

通过格式化函数进行转换

PostgreSQL提供一系列函数用于数据类型转换,如表所示。

通过CAST函数进行转换将varchar字符类型转换成text类型,如下所示:

        mydb=> SELECT CAST(varchar'123' as text);
            text
        ------
            123
        (1 row)

将varchar字符类型转换成int4类型,如下所示:

        mydb=> SELECT CAST(varchar'123' as int4);
            int4
        ------
            123

通过::操作符进行转换

以下例子转换成int4或numeric类型,如下所示:

        mydb=> SELECT 1::int4, 3/2::numeric;
          int4 |      ? column?
        ------+--------------------
            1 | 1.5000000000000000
        (1 row)

另一个例子,通过SQL查询给定表的字段名称,先根据表名在系统表pg_class找到表的OID,其中OID为隐藏的系统字段:

        mydb=> SELECT oid, relname FROM pg_class WHERE relname='test_json1';
              oid  |  relname
        ----------+------------
            16509 | test_json1
        (1 row)

之后根据test_json1表的OID,在系统表pg_attribute中根据attrelid(即表的OID)找到表的字段,如下所示:

        mydb=> SELECT attname FROM pg_attribute WHERE attrelid='16509' AND attnum >0;
            attname
        ---------
            id
            name
        (2 rows)

上述操作需通过两步完成,但通过类型转换可一步到位,如下所示:

        mydb=> SELECT attname
                FROM pg_attribute
                WHERE attrelid='test_json1'::regclass AND attnum >0;
            attname
        ---------
            id
            name
        (2 rows)

这节介绍了三种数据类型转换方法,第一种方法兼容性相对较好,第三种方法用法简捷。

提示

pg_class系统表存储PostgreSQL对象信息,比如表、索引、序列、视图等,OID是隐藏字段,唯一标识pg_class中的一行,可以理解成pg_class系统表的对象ID;pg_attribute系统表存储表的字段信息,数据库表的每一个字段在这个视图中都有相应一条记录,pg_attribute.attrelid是指字段所属表的OID,正好和pgclass.oid关联。


http://www.niftyadmin.cn/n/5179614.html

相关文章

设计模式之工厂模式 ( Factory Pattern )(1)

其他设计模式也会后续更新… 设计模式其实需要有一定开发经验才好理解,对代码有一定的设计要求,工作中融入才是最好的 工厂模式 ( Factory Pattern ) 工厂模式(Factory Pattern)提供了一种创建对象的最佳方式 工厂模式在创建对…

前端开发入门笔记(八)CSS3属性详解:动画详解+Flex布局图文详解+Web字体

参考链接:https://web.qianguyihao.com/02-CSS%E5%9F%BA%E7%A1%80/12-CSS3%E5%B1%9E%E6%80%A7%E8%AF%A6%E8%A7%A3%EF%BC%9A%E5%8A%A8%E7%94%BB%E8%AF%A6%E8%A7%A3.html#_3%E3%80%81%E6%97%8B%E8%BD%AC%EF%BC%9Arotate 过渡 transition的中文含义是过渡。过渡是CSS…

Android APK打包的过程主要步骤

Android APK打包的过程可以概括为以下几个主要步骤: 编译源代码:将开发好的Java源代码编译成Dalvik字节码文件(.dex文件),Android安卓该文件包含了Android平台上的运行程序的指令集。打包资源文件:将应用程…

分布式事务的用途是什么?分布式事务产生的情景有哪些?分布式事务的解决方案和思路

分布式事务,指的就是在分布式的系统里面完成一些事务,下文介绍了分布式事务的用途是什么?分布式事务产生的情景有哪些等问题。 一、分布式事务的用途是什么? 分布式事务处理 (TP) 系统旨在协助在分布式环境中跨异类的事务识别资…

云课五分钟-02第一个代码复现-终端甜甜圈C++

前篇 云课五分钟-01课程在哪里-无需安装网页直达- 代码复现通过云课,会非常快捷。 视频 云课五分钟-02第一个代码复现-终端甜甜圈C 文本 如何使用g 使用g编译和链接C程序的基本步骤如下: 编写源代码:首先,你需要编写C源代码&…

桌面便签软件用哪个?10款全球好用的便签软件推荐,告别杂论无章!

在如今的快节奏社会中,我们的生活和工作节奏越来越快,每天面对的信息成倍地增长。有时候,我们需要随手记下一些重要的事情,或者是一些突然的灵感,这时候就需要一款好用的桌面便签软件。 桌面便签软件可以帮助我们更好…

SSL证书安装前后的区别有哪些?

许多企业和个人都意识到了保护用户隐私和数据的重要性,因此选择了安装SSL证书来保护他们的网站。通过SSL证书的加密保护,网站可以获得用户的信任,并提升自身的品牌形象。企业和个人都应该安装SSL证书,为自己和用户提供一个安全可靠…

centOs 6.10 编译 qt 5.15.11

安装依赖库 xcb 依赖库 qt xcb 需要的依赖 如何要用 x11, 就要在编译的时候加上 -xcb 选项,就要安装 xcb 相关的库。 到时可以在 config.log 文件查看,缺少哪个库就安装哪个。 下面是我手动安装的库和对应版本: xcb-proto-1.14.tar.gz x…