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

如何在Snowflake中用REGEXP_SUBSTR提取不同格式的TABLE_NAME

解决Snowflake中提取ALTER TABLE语句里的TABLE_NAME问题

你可以调整正则表达式,匹配带库/模式前缀或不带前缀的表名格式,具体SQL如下:

SELECT REGEXP_SUBSTR(query_text, 'ALTER TABLE (?:[0-9A-Za-z\\-\\_]+\\.)*([0-9A-Za-z\\-\\_]+) ADD COLUMN', 1, 1, 'e', 1);

正则逻辑说明:

  • (?:[0-9A-Za-z\\-\\_]+\\.)*:非捕获组,用来匹配0个或多个「标识符+点」的前缀(比如DATABASE_NAME.或SCHEMA_NAME.,组合起来的DATABASE_NAME.SCHEMA_NAME.也能匹配),*表示这个前缀可以出现0次(对应第三种无前缀的表名格式)。
  • ([0-9A-Za-z\\-\\_]+):捕获组1,也就是我们要提取的TABLE_NAME,匹配最后一个由字母、数字、下划线、减号组成的标识符。
  • 最后通过'e'参数指定提取第1个捕获组的内容。

如果需要忽略大小写匹配(比如语句里是alter table小写形式),可以把参数改成'ei':

SELECT REGEXP_SUBSTR(query_text, 'ALTER TABLE (?:[0-9A-Za-z\\-\\_]+\\.)*([0-9A-Za-z\\-\\_]+) ADD COLUMN', 1, 1, 'ei', 1);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 00:39:58