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

如何在Snowflake中使用regexp_replace替换尖括号内的字符?

解决方案:移除所有尖括号<>及其内部内容

你的原SQL正则仅匹配特定格式的结尾(6-7位数字加.>),无法覆盖所有尖括号场景。要实现移除所有<>及其中任意内容的需求,可使用通用的正则匹配方案:

核心正则逻辑

使用正则表达式 <[^>]*> 匹配完整的尖括号块:

  • <:匹配左尖括号
  • [^>]*:匹配任意数量(包括0个)非右尖括号的字符
  • >:匹配右尖括号

搭配全局替换参数,确保所有匹配的尖括号块都被移除。

适配不同SQL方言的实现

1. PostgreSQL(支持POSIX正则)

SELECT 
  ga_dimension16,
  regexp_replace(ga_dimension16, '<[^>]*>', '', 'g') AS cleaned_dimension
FROM stageABC 
WHERE ga_dimension16 LIKE '%<%';
  • 'g' 参数表示全局替换,会替换所有匹配的尖括号块,而非仅第一个。

2. MySQL 8.0+

SELECT 
  ga_dimension16,
  REGEXP_REPLACE(ga_dimension16, '<[^>]*>', '', 1, 0) AS cleaned_dimension
FROM stageABC 
WHERE ga_dimension16 LIKE '%<%';
  • 第4个参数1表示从第1个字符开始匹配,第5个参数0表示全局替换所有匹配项。

3. SQL Server

SELECT 
  ga_dimension16,
  REGEXP_REPLACE(ga_dimension16, '<[^>]*>', '', 0, 0) AS cleaned_dimension
FROM stageABC 
WHERE ga_dimension16 LIKE '%<%';
  • 第3个参数0表示忽略大小写(这里不影响),第4个参数0表示全局替换。

示例验证

针对你提供的测试数据:

11223335 <!---->
22321<!---->
123<span _ngcontent-pyp-c88="" class="fid ng-star-inserted">/ parent force id: <a _ngcontent-py>

替换后结果为:

11223335 
22321
123/ parent force id: 

如果需要进一步移除替换后多余的空格,可在结果外层包裹TRIM()函数,例如:TRIM(regexp_replace(...))。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 16:45:03