Snowflake - 检查字符串的前 3 个字符是否为字母

1 sql contains letter sql-like snowflake-cloud-data-platform

我试图确定如何在 Snowflake SQL 中识别产品代码是否以三个字母开头。

建议?

我只是尝试过: LEFT(P0.PRODUCTCODE,3) NOT LIKE '[a-zA-Z]%' 但它不起作用。

谢谢大家

Gra*_*ace 5

您可以用来REGEXP_LIKE返回一个布尔值,指示您的字符串是否与您感兴趣的模式匹配。

在你的情况下,类似REGEXP_LIKE(string_field_here, '[a-zA-Z]{3}.*')

分解正则表达式模式:

  • [a-zA-Z]: 只匹配字母字符,无论大小写
  • {3}: 需要其中三个字母
  • .*:在这三个字母之后允许任意数量的任意字符

注意:在许多情况下,您需要在模式中专门指示字符串的开头/结尾,但 Snowflake 的实现会为您处理该问题。来自文档:

该函数隐式地在两端锚定一个模式(即“”自动变为“^$”,“ABC”自动变为“^ABC$”)。要匹配以 ABC 开头的任何字符串,模式将为“ABC.*”。


您可以尝试运行这些示例:

SELECT REGEXP_LIKE('abc', '[a-zA-Z]{3}.*') AS _abc,
       REGEXP_LIKE('123', '[a-zA-Z]{3}.*') AS _123,
       REGEXP_LIKE('abc123', '[a-zA-Z]{3}.*') AS _abc123,
       REGEXP_LIKE('123abc', '[a-zA-Z]{3}.*') AS _123abc
Run Code Online (Sandbox Code Playgroud)