sql - 如何以以下格式从 postgres 中提取字符串 {'x: 'data', 'old_x': 'Datax'}
问题描述
我的行中有以下类型的数据
{'new_value_formatted': 'Committed/Test Transaction', 'old_value_formatted': 'Completed'}
我希望将 new_value_formatted 和 old_value_formatted 作为单独的列和以列方式存储的数据
尝试了正则表达式 '(([AZ/ ])\w+)'。还是不能隔离。
select a.id,a.title,additional_data,
substring(b.additional_data ->> "old_value_formatted" FROM '[0-9a-zA-Z]+') as "Old Value",
substring(b.additional_data ->> "new_value_formatted" FROM '[0-9a-zA-Z]+') as "New from table a,b....
Old Value | New_Value
__________|____________
xxxxx . | xxxxx
解决方案
此处显示的格式不是有效的 json。Json 使用双引号。如果在 postgresql 9.2+ 上,我会replace(data,'\'','"')::json
得到有效的 json,处理引用问题。然后你可以做选择new_data ->> 'new_value_formatted'
我使用 new_data 作为有效 json 版本的占位符。
如果您需要此旧版本,请返回给我。
Ps:这个没有测试,因为我目前手头没有机器。
推荐阅读
- java - 如何设置 targetCompatibility=1.8 和 sourceCompatibility=1.9 或更高版本的 IntelliJ/Gradle 项目?
- python - Python 线程:运行一个线程,丢弃所有其他线程的最佳实践
- javascript - 基于递归期间更改的值打破多重递归
- logging - Serilog 或 NLog 的基于开源浏览器的解决方案
- java - 如果值为 null 或为空,如何使用 Apache Velocity 模板生成自关闭 XML 元素
- mongodb - Docker 与 MongoDB(和 Microsoft Azure)组合
- java - 如何正确地将资源添加到我的 java 项目中,以便它们可用于构建的实例?
- java - 在 GKE 中部署时的 PubSub 连接问题
- css - 使用伪代码为带有样式组件的单选按钮设置样式
- r - R - 从另一个列表上的操作填充一个空列表