暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

三种PostgreSQL数据类型转换方法

原创 梧桐 2023-08-17
7971

三种数据类型转换方法:

1 格式化函数

  • 把时间戳转换成字符串 to_char(current_timestamp,‘HH12:MI:SS’)

  • 把间隔转换成字符串 to_char(interval’15h2m12s’,‘HH24:MI:SS’)

  • 把整数转换成字符串 to_char(125,‘999’)

  • 把数字转换成字符串 to_char(-125.8,‘999D99S’)

  • 把字符串转换成日期 to_date(‘05Dec2000’,‘DDMonYYYY’)

  • 把字符串转换成数字 to_number(‘12,8888’,‘99G999D9’)

  • 把字符串转换成时间戳 to_timestamp(‘05 Dec 2000’,‘DD Mon yyyy’)

    您可以使用命令验证:如:把整数转换成字符串

    select to_char(125,'999');

2 通过CAST函数进行转换

把varchar字符类型转换成text类型,如下所示:

SELECT CAST(varchar'123' as text);

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

SELECT CAST(varchar'123' as int4 );

3 通过::操作符进行转换

转换成int4或numeric类型:

select 1::int4,3/2::numeric;

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

select oid,relname from pg_class where relname='address';

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

SELECT attname FROM pg_attribute WHERE attrelid='49160' AND attnum>0;

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

select attname from pg_attribute where attrelid='address'::regclass and attnum >0;

第一种方法兼容性相对较好,第三种方法用法简捷。

最后修改时间:2025-03-12 11:20:24
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论