我试图确定如何在Snowflake SQL中识别产品代码是否以三个字母开头。
建议?
我刚刚尝试了:左(P0。产品代码,3(不像"[a-zA-Z]%",但它不起作用。
谢谢大家
您可以使用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