如何使用SQL Regex从具有特定前缀的字符串中提取数字?

时间:2018-01-21 19:24:56

标签: sql regex amazon-redshift

我有一个存储在Redshift表列中的字符串(event_attribute_value):

[{shipment_id:2409777178,sku:1223XLMNPQR,container_scannable_id:blahblah,order_id:3KNCGS6W,quantity_received:3}]

我想提取' 3'从使用SQL正则表达式收到的数量。 ' quantity_received'也可以出现在字符串中的任何位置。

select 
  event_attribute_value,
  regexp_substr(event_attribute_value, '/quantity_received:(\d+)/') as quantity 
from receive_events limit 10;

这就是我为了获得数量而感受到的:3'超出字符串,但它返回NULL

2 个答案:

答案 0 :(得分:1)

只需使用正则表达式:/quantity_received:(\d+)/,然后提取第一个捕获组。指定更具体解决方案的语言。

答案 1 :(得分:0)

使用PHP:

$str = '[{shipment_id:2409777178,sku:1223XLMNPQR,container_scannable_id:blahblah,order_id:3KNCGS6W,quantity_received:3}]';
preg_match('/(.*)quantity_received:(\d+)(.*)/', $str, $matches);

echo $matches[2];