正则表达式 trim 字符串的一部分 sql

regex trim the part of the string sql

我的数据保存在 Big Query 中。有一列需要 REGEX 提取。字符串的例子如下:

?src=abb_fh_uit*_source=h&_medium=cpm&my_campaign=abb_hc_hr
src=abb_fh_uit*_source=h&_medium=cpm&my_campaign=goal_healthcare
?src=abb_fh_uit*_source=h&_medium=cpm&my_campaign=goal_hr
?src=abb_fh_uit*_source=h&_medium=cpm&my_campaign=abb_hr_healthcare

我想要的输出是这样的:

my_campaign=goal
my_campaign=goal

基本上我需要 trim 除了 my_campaign=goal 我写的代码在SQL下面:

LOWER(REGEXP_EXTRACT(my_column,r'my_campaign=([^&])')) AS my_campaign

它 returns 一切都带有 my_campaign my_campaign=abb_hc_hr, my_campaign=goal_healthcare 等。我应该如何更改现有代码以仅获取 my_campaign=goal? 谢谢。

以下适用于 BigQuery 标准 SQL

你应该使用下面的

SELECT 
  LOWER(REGEXP_EXTRACT(my_column,r'(my_campaign=[^&]*)&?')) AS my_campaign   
FROM your_table
WHERE LOWER(my_column) LIKE '%my_campaign=goal_%'

如果应用于您问题中的示例数据 - 输出为

Row my_campaign  
1   my_campaign=goal_healthcare  
2   my_campaign=goal_hr