regex Bigquery SQL嵌套正则表达式替换简化

9cbw7uwe  于 2022-11-18  发布在  其他
关注(0)|答案(1)|浏览(121)

目前正在使用许多regex_replace函数规范BQ中的地址列,每个函数都有唯一的匹配和替换值。

regexp_replace(regexp_replace(regexp_replace(regexp_replace(regexp_replace(regexp_replace(regexp_replace(regexp_replace(regexp_replace(regexp_replace(regexp_replace
            (regexp_replace(regexp_replace(regexp_replace(regexp_replace(UPPER(address),
"STREET", "ST"),
"ROAD", "RD"),
...

有没有更简单的方法?

9jyewag0

9jyewag01#

您可以使用UDF来清除查询:

Create temp function replace_me(s string,a1 string,a2 string,b1 string,b2 string,c1 string,c2 string) as 
(replace(replace(replace(s,a1,a2),b1,b2),c1,c2));
select replace_me(replace_me(upper("Road 5, Street 7"),"ROAD","RD","STREET","ST","",""),"","","","","","")

如果您只需要缩写单词,可以使用正则表达式:

SELECT 
  REGEXP_REPLACE("ROAD 7, STREET 5, NEW YORK", CONCAT(r'(?i)(RO)AD|(ST)REET|(N)EW (Y)ORK'), r'\1\2\3\4')

相关问题