我有一个存储在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
答案 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];