正则表达式 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
我的数据保存在 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