如果字符串以 8 个字符开头并带有破折号“-”,则插入特定标签

If string starts with 8 characters with a dash "-" insert specific label

在 SQL 中(特别是在 Snowflake 中),我有一个如下所示的字符串:

Col_A
afdafe12-123-42141
jkk121jd-313-129en
dje-332-djak

如果模式以 8 个字符开头并带有“-”,我该如何制定规则,它被标记为“保留”?

我想做一个类似于下面的 case when 语句:

case when Col_A "regex rule" then 'keep' 
when Col_A like 'dje%' then 'remove' else 'disregard' end new_col
from dataframe

那就是:

col_a rlike '^.{8}-'

细分:

^      beginning of the string
.{8}   any 8 characters
-      a dash

或者如果您希望第一个破折号位于字符串中的第 9 个位置:

col_a rlike '^[^-]{8}-'

... 其中 '[^-]' 表示:除 '-'.

之外的任何字符

您可以使用 8 个下划线。下划线匹配单个字符

case when Col_A like '________-%' then 'keep' 
     when Col_A like 'dje%' then 'remove' 
     else 'disregard' end as new_col

提示:Snowflake 还支持不区分大小写的 ilike like。合适的话可以换掉