首页 > 解决方案 > 雪花 - 检查字符串是否为字母数字?

问题描述

我有一列不应包含任何字母数字值。我努力了

case when col1 like '%[0-9]%' 
    then 1 
    else 0 
end 

但这不起作用。

标签: sqlregexstringcasesnowflake-cloud-data-platform

解决方案


like不明白你给它的模式。你想要一个正则表达式匹配,所以使用一个正则表达式函数:

select col1, regexp_like(col1, '.*[0-9].*') has_number from mytable

这为您提供了一个布尔值 ( true/ false)。如果你想要一个数字,你可以cast或使用一个case表达式来代替。

这将检查字符串是否包含任何数字。如果您想搜索 任何字母数字字符,那么\w就派上用场了:

regexp_like(col1, '.*\\w.*')

最后,如果您想确保字符串仅包含字母数字字符:

regexp_like(col1, '^\\w*$')

推荐阅读