首页 > 解决方案 > 替代雪花中的正则表达式

问题描述

我正在尝试在雪花中使用 oracle 正则表达式代码,但是在雪花中按预期工作时得到空值作为结果。

要求:比较邮政编码,如果符合格式则返回结果。

SELECT  
   CASE WHEN REGEXP_LIKE('AB101TZ','^[A-Z]{2}[0-9]+') THEN 'AB101TZ'
         WHEN REGEXP_LIKE('AB101TZ','^[A-Z][0-9]+') THEN 'AB101TZ'
         ELSE '-'
     END postcode_part_a

这个表达式需要做哪些修改

标签: snowflake-cloud-data-platformregexp-like

解决方案


REGEXP_LIKE 必须匹配整个字符串,而不仅仅是它的一部分,才能返回 true。

您可能想要这样的东西(在 Snowflake REGEXP 中自动锚定):

[A-Z]{2}[0-9]{1,3}[A-Z]{2}

这将匹配模式 2 个大写字母,后跟 1 到 3 个数字,然后是 2 个大写字母。您可以根据您正在编码的国家/地区的邮政编码进行适当调整。


推荐阅读