Sql 搜索特定图案,如果在字符串数组中找到,则删除/修剪后缀
我想从域名字段中删除“.com”后缀,该字段是由管道(|)分隔的字符串数组 数据如下所示-Sql 搜索特定图案,如果在字符串数组中找到,则删除/修剪后缀,sql,google-bigquery,Sql,Google Bigquery,我想从域名字段中删除“.com”后缀,该字段是由管道(|)分隔的字符串数组 数据如下所示- ID domain 1 ab23c45 | xyz167a.com | d1ef76om.com |rx08bj23 2 omg23hy5 | xyz167a | ab23c45.com | jhy2ft3.com 结果应该是这样的- ID domain 1 ab23c45 | xyz167a | d1ef76om |rx08
ID domain
1 ab23c45 | xyz167a.com | d1ef76om.com |rx08bj23
2 omg23hy5 | xyz167a | ab23c45.com | jhy2ft3.com
结果应该是这样的-
ID domain
1 ab23c45 | xyz167a | d1ef76om |rx08bj23
2 omg23hy5 | xyz167a | ab23c45 | jhy2ft3
下面是BigQuery标准SQL
#standardSQL
SELECT id,
(
SELECT STRING_AGG(TRIM(REPLACE(TRIM(domain), IFNULL(NET.PUBLIC_SUFFIX(TRIM(domain)), ''), ''), '.'), ' | ')
FROM UNNEST(SPLIT(domain, '|')) domain
) domain
FROM `project.dataset.table`
如果要应用于问题中的样本数据,则输出为
Row id domain
1 1 ab23c45 | xyz167a | d1ef76om | rx08bj23
2 2 omg23hy5 | xyz167a | ab23c45 | jhy2ft3
注意:上面的代码处理任何后缀-不仅仅是“.com”看起来更好,我删除了我的答案上面的解决方案支持任何被认为是公共后缀的东西-因为它被
NET.public\u suffix
内置函数处理。看起来在你上面的例子中需要调整以处理任何后缀-你仍然想要这个问题的答案还是你可以自己开始这个问题的答案?请告诉我,如果您能回答,我将不胜感激。提前感谢!:)@用户11035754-顺便说一句。我刚刚用.network
进行了测试,它确实如预期的那样工作-我建议您仔细检查您的数据!!!所以我认为我没有必要采取进一步的行动:o)我的原始数据中的后缀有很多变化。这可能就是为什么它不能适用于所有情况