PostgreSQL截取字符串到指定字符位置详细示例

2024-03-01 0 605

今天在做PG数据到HIVE的数据交换任务时,因为某个字段在PG中是Varchar类型,hive是bigint,而偏偏PG 中该字段的存储值都被加了小数点位,导致字段类型转换失败。

PostgreSQL截取字符串到指定字符位置详细示例

现在就需要将字符串中小数点后的部分给截掉。

开始时尝试使用的是CHARINDEX来获取小数点的位置,然后使用substring函数截取该位置之前的数值。

select CAST(SUBSTRING(sal_qty, 1 , CHARINDEX(\’.\’,sal_qty)-1)as bigint)

但是运行时发现PG中没有CHARINDEX函数。

SQL 错误 [42883]: ERROR: function charindex(unknown, character varying) does not exist 建议:No function matches the given name and argument types. You might need to add explicit type casts.

在官方文档中查找相应的替换函数

https://www.postgresql.org/docs/current/functions-string.html

找到一个position函数

PostgreSQL截取字符串到指定字符位置详细示例

position ( substring text IN string text ) → integer
Returns first starting index of the specified substring within string, or zero if it\’s not present.
position(\’om\’ in \’Thomas\’) → 3

测试一下

select sal_qty, cast(SUBSTRING(sal_qty, 1 , position (\’.\’ in sal_qty) – 1) as bigint) as sal_qty_int from table_test

返回结果,符合预期。

PostgreSQL截取字符串到指定字符位置详细示例

另外还可以尝试使用strpos函数,功能和position相同,但要注意参数位置

PostgreSQL截取字符串到指定字符位置详细示例

strpos ( string text, substring text ) → integer
Returns first starting index of the specified substring within string, or zero if it\’s not present. (Same as position(substring in string), but note the reversed argument order.)
strpos(\’high\’, \’ig\’) → 2
select sal_qty, cast(SUBSTRING(sal_qty, 1 , strpos(sal_qty,\’.\’)-1)as bigint) as sal_qty_int from table_test

总结

到此这篇关于PostgreSQL截取字符串到指定字符位置的文章就介绍到这了,更多相关PGSQL截取字符串到指定位置内容请搜索悠久资源以前的文章或继续浏览下面的相关文章希望大家以后多多支持悠久资源!

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悠久资源 PostgreSQL PostgreSQL截取字符串到指定字符位置详细示例 https://www.u-9.cn/database/postgresql/182842.html

常见问题

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务