You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

BigQuery自定义UDF移除字符串重音/变音符号失效问题咨询

问题产生原因
  • BigQuery 提供的 JavaScript UDF 运行环境对 ES6 的 String.prototype.normalize() 方法兼容性不足,多数场景下该方法不会生效,无法将带重音的 Unicode 字符拆分为「基础字符 + 独立变音符号」的 NFD 编码形式,后续针对变音符号区间的正则替换自然无法命中目标字符。
  • 即使个别版本环境支持normalize方法,BigQuery 向 JS 运行时传递字符串时会预先做编码处理,也可能导致拆分后的变音符号不在\u0300-\u036f匹配范围内,造成替换失效。
解决方案

优先使用 BigQuery 原生 SQL 函数实现该逻辑,完全避开 JS UDF 的兼容性问题,执行效率也更高:

CREATE OR REPLACE FUNCTION project.remove_accent(x STRING)
RETURNS STRING AS (
  REGEXP_REPLACE(NORMALIZE(x, NFD), r'[\u0300-\u036f]', '')
);

测试该函数:

SELECT project.remove_accent("éàçèñ")

返回结果为eacen,符合预期。

如果必须使用 JS UDF 实现,可以引入兼容版的 Unicode 规范化 polyfill 到 UDF 代码中,替代原生normalize方法即可,不过整体复杂度和执行性能都不如原生 SQL 方案。

内容的提问来源于stack exchange,提问作者Jason Tragakis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 07:09:02