Snowflake中如何筛选以‘_+数字’结尾的表名
解决Snowflake中查询以“_+数字”结尾表名的问题
你的原语句失效的原因是:Snowflake的LIKE语法不支持正则表达式的$(结尾匹配)、[0-9](数字范围)这类规则,它只认%(任意长度字符)和_(单个字符)两个通配符。虽然你用^转义了下划线,但后面的[0-9]$会被当作普通字符串处理,自然匹配不到目标表名。
下面是两种可行的正确写法:
方法1:使用正则表达式匹配(推荐)
直接用Snowflake支持的REGEXP_LIKE函数,精准匹配“下划线+一个或多个数字结尾”的表名:
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE REGEXP_LIKE(TABLE_NAME, '_[0-9]+$');
- 正则说明:
_:匹配实际的下划线字符[0-9]+:匹配1个及以上的数字$:限定匹配必须在字符串结尾
方法2:结合LIKE与字符串函数(不用正则的方案)
如果偏好纯通配符写法,可以通过定位最后一个下划线的位置,判断后续字符是否全为数字:
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE '%\_%' AND TRY_CAST(RIGHT(TABLE_NAME, LENGTH(TABLE_NAME) - CHARINDEX('_', REVERSE(TABLE_NAME)) + 1) AS INT) IS NOT NULL;
这里通过REVERSE找到最后一个下划线的位置,截取后续内容后尝试转为整数,能转成的说明全是数字。
内容的提问来源于stack exchange,提问作者Aiden
相关产品推荐
相关产品推荐

