Snowflake正则表达式:如何判断列中是否包含任意数字?
解决REGEXP_LIKE匹配包含数字字符串的问题
你需要修改正则表达式模式,使其匹配包含至少一个数字的字符串,而非要求整个字符串全部为数字。
正确语句
select REGEXP_LIKE(col, '.*[0-9].*')
模式说明
.*:匹配任意数量(包括0个)的任意字符(具体是否包含换行符取决于数据库实现)[0-9]:匹配单个数字字符- 整个模式的逻辑是:只要字符串任意位置存在至少一个数字,无论前后有其他什么字符,都返回匹配结果
简化写法
部分数据库(如Oracle)中,REGEXP_LIKE默认支持部分匹配(只要字符串中存在符合模式的子串就返回True),此时可以用更简洁的写法:
select REGEXP_LIKE(col, '[0-9]')
如果你的数据库默认要求全字符串匹配,仍需使用.*[0-9].*来兼容前后的任意字符。
验证结果
- 对
12345:符合匹配条件,返回True - 对
100 Apple St:字符串包含数字子串,符合匹配条件,返回True
内容的提问来源于stack exchange,提问作者skyzine
相关产品推荐
相关产品推荐

