Standard SQL(Google BigQuery):如何提取URL中特定字符之前的内容
BigQuery Standard SQL 提取截断URL实现方案
你存储URL的Landing Page字段可以通过BigQuery内置的正则函数实现需求,具体操作如下:
核心实现代码
使用REGEXP_EXTRACT函数匹配开头到引号/乱码前的内容:
SELECT -- 提取从开头到第一个双引号/非ASCII乱码前的所有字符 REGEXP_EXTRACT(`Landing Page`, r'^[^"\\x80-\\xff]+') AS cleaned_landing_url FROM `你的项目名.你的数据集名.你的表名`
规则说明
- 正则
r'^[^"\\x80-\\xff]+'逻辑:^锚定匹配字符串开头,避免中间匹配[^"\\x80-\\xff]匹配不属于以下两类的所有字符:- 双引号
",如果你的截断标识是单引号,可替换为' - 十六进制ASCII码
\x80到\xff对应字符,也就是所有非标准ASCII的乱码、多字节语言字符等
- 双引号
+匹配连续多个符合规则的字符
- 如果需要调整截断位置,只需要把对应要排除的字符加入
[^...]的规则集合中即可
测试验证示例
假设原始Landing Page值为https://www.test.com/product/123?cid=abc"乱码后缀xxx,运行上述SQL后得到的cleaned_landing_url结果为https://www.test.com/product/123?cid=abc,符合截断需求。
内容的提问来源于stack exchange,提问作者MatmataHi
相关产品推荐
相关产品推荐

