regex 如何在Presto中从列中提取“+”和“@”之间的字符串?

ifmq2ha2  于 2023-04-13  发布在  Presto
关注(0)|答案(1)|浏览(316)

我在Presto中有如下表:

输入数据:

PHONE_NUMBER
--------
ppa:+77845678021@abc.gbc443.gbc356.7kffooopppp.deu  
tel:+77695002395  
dadsadas+884415002996xx2
....

要求:

我需要从“PHONE_NUMBER”列中获取“+”和“@”之间的所有值(如果存在)。

期望输出:

因此,我需要下面这样的东西:

PHONE_NUMBER
--------
77845678021 
77695002395 
884415002996
....

如何在Presto中做到这一点?

5sxhfpxr

5sxhfpxr1#

我相信对于这个版本的问题,你可以使用这样的东西:

SELECT regexp_extract(PHONE_NUMBER, '\+(\d+)@?', 1) from my_table;

这里,从每行的PHONE_NUMBER中提取数字,紧跟着加号,并且可选地后跟@
如果您对需要多少位数有所了解,可以使用\+(\d{13,146})@?,其中13 -最小位数(包括),146 -最大位数(包括)。

相关问题