postgresql分割字符串_Postgresql 字符串截取

在一次数据迁移中,遇到的一个场景。需要从一串 JSON 中提取其中一段字符串。在 Bing 上搜索发现很少在 Postgresql 中用到字符串截取的。下面是解决的方法,不一定好,但恰好可以解决问题。

JSON 字符串

'{"item":{"id":"c0540d7e-bedb-4521-b2b1-401d099575d1","name":"这时一张图片.jpg","path":"5cbf3cff-4be0-4f82-b21a-34ccbb93e830/15a8164e-6244-4369-96bd-3fa5f6a24ff9/823b93f69867ad18501057e4312793dc.jpg","createdUserId":"5cbf3cff-4be0-4f81-b21a-34ccbb93e830","hash":"823b93f69867ad18501057e43e2793dc","createdUserName":"Admin","type":".jpg","size":47505408,"createdAt":"2019-05-25T11:54:33.5207074+08:00","url":"http://221.178.13.191:9021/5cbf3cff-4be0-4f81-b21a-34ccbb93e830/15a8164e-6244-4369-96bd-4fa5f6a24ff9/823b93f69867ad18501057e43e2793dc.jpg","completed":false,"tag":null,"tags":["BIM_MANAGER","500103","MUNICIPAL","CONSTRUCTION_APPLY_PHASE"]},"success":true}'

原始信息如上,现在需要将粗体部分截取出来。用到时方法是 regexp_split_to_table,该方法可以将字符串分割成行。

第一次执行(其中第二个参数的 E 是 Postgresql 正则的语法)

SELECT regexp_split_to_table(JSON字符串, E',"path":"')

图1

可以看到第二行中已经出现了我们需要的结果了。但是还不能直接使用。于是。。。再截一次。

第二次执行(得到最终结果)

SELECT regexp_split_to_table

(

regexp_split_to_table

(

JSON字符串, E',"path":"'

),

E'.jpg",'

)

|| '.jpg'

LIMIT 1 OFFSET 1;

图2

说明:

1.第一层 regexp_split_to_table 得到两条数据如图1

2.第二层 regexp_split_to_table 从第一层的第二条结果中继续截取,得到数据如图2

3.图2中第二条数据就离最终结果非常接近了,所以再给字符串后面加上.jpg

4.使用LIMIT 1 OFFSET 1语句获取第二条数据,就是最终的结果数据如图3

图3

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值