regex 如何删除“垃圾”从列中只留下电话号码在SQL?

ac1kyiln  于 2023-04-07  发布在  其他
关注(0)|答案(1)|浏览(128)

SQL中的表如下:

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

正如你所看到的,我在COL1电话号码有很多“垃圾”,我需要转换该列中的值,以具有如下内容(只有电话号码):

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

如何在SQL中做到这一点?

fquxozlt

fquxozlt1#

你可以使用regexp_substr。类似这样:

select regexp_substr(PHONE_NUMBER, '[0-9]{11,14}') PHONE_NUMBER
  from my_table

MySQL的演示可以看到here
这将提取第一个11到14位的块。因为你没有提供任何关于电话格式的规范,我猜在这里。
编辑:对于Hive,应该使用regexp_extract

select regexp_extract(PHONE_NUMBER, '[0-9]{11,14}') PHONE_NUMBER
  from my_table

相关问题