sql - 在sql中的某些单词之间选择数字
问题描述
我有一个关于从 SQL 文本中提取数字信息的问题。“shop_priceChange”表如下所示:
shop_id apply_content
10048586 {"priceChange":"item price change from 88.0 to 98.0"}
10050114 {"priceChange":package price change from 0.8 to 1.0"}
10036306 {"priceChange":"item price change from 19.0 to 21.0"}
我希望通过从“shop_priceChange”表中提取价格信息之前/之后得到下表:
shop_id category before after
10048586 item 88 98
10050114 package 0.8 1.0
10036306 item 19.0 21.0
在此先感谢您的帮助!
解决方案
不确定您使用的是什么 DBMS,但假设字符串模式为"priceChange":"XXX price change from YYY to ZZZ"
,您可以尝试以下操作Postgres
:
SELECT shop_id,
SUBSTRING(apply_content, 'priceChange":"(\w+)') category,
SUBSTRING(apply_content, 'price change from ([0-9][\.\d]*) to') price_before,
SUBSTRING(apply_content, 'price change from.*to ([0-9][\.\d]*)') price_after
FROM my_table
;
推荐阅读
- objective-c - MacOS 11:NSMenu 3px 太小
- javascript - React JS 和 Node API 调用优化以获得更好的性能
- python - .dat 文件中的 Dlib 选项
- jmeter - Jmeter:使用SetUp线程组变量中的变量值运行HTTP采样器n次
- flutter - 我应该如何在下面的代码中添加 TabBarView?
- firebase - chrome 扩展中的 Firebase 身份验证问题
- graph - 在前端可以选择将图形从堆叠更改为分组,反之亦然
- c++ - 最长公共子序列 top-bottom
- css - SVG如何更改通过香草HTML5中的文件提供的特定SVG图像中特定路径的填充颜色
- python - 将多个 csv 文件中的几列合并到一个 csv 文件中