首页 > 解决方案 > 带有 rlike 的雪花正则表达式返回布尔值会产生意想不到的结果

问题描述

如果字段“名称”包含字符串“IOS_PROD”,则需要返回 1 或 0。试过:

case when rlike(c.name, 'IOS_PROD') then 1 else 0 end as IOS

返回所有 0,而不是预期的 1 和 0 的混合。如何以这种方式进行正则表达式并返回 1 或 0?

使用以下方法验证基础数据:

select name, count(1) from table group by 1

当然,名称包含“IOS_PROD”但不包含的情况混杂,所以我的正则表达式有缺陷。

标签: sqlsnowflake-cloud-data-platform

解决方案


首先,如果返回0s,则不匹配。

其次,您可以为此使用内置 SQLLIKE运算符:

(case when c.name like '%IOS\_PROD%' then 1 else 0 end) as IOS

一个问题可能是大写与小写,所以也许:

(case when upper(c.name) like '%IOS\_PROD%' then 1 else 0 end) as IOS

推荐阅读