首页 > 解决方案 > 在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

在此先感谢您的帮助!

标签: sqlpostgresql

解决方案


不确定您使用的是什么 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
;

SQL小提琴


推荐阅读