我正在Snowflake上为特定字段中的字符串查找值。例如,我有一个名为col1
的列,其中有两个值,如下所示
1. |LFD: |**Wed 07 Jul 2021**|
2. LFD & additional info
在第一条记录中,我们有字符串LFD
的值,给出为2021年7月7日。但在第二排,我们并没有LFD的价值。
我尝试创建一个布尔标志,如下所示;
case when col1 ilike '%LFD%' then 0 else 1 end as LFD_missing_flag
有趣的是,它对两行都给出0,但对第二行给出1,对第一行给出0。预期输出
col1 LFD_missing_flag
|LFD: |**Wed 07 Jul 2021**| | 0
LFD & additional info. | 1
由于在第二行中我们没有LFD的值,所以它应该是1,否则为0,如第一条记录所示。
修改沿着同一行,我有下面的一段文字;
|FIRMS Code: |**Unknown**|
|FIRMS Code: |**WAM7**|
|FIRMS Code: |WAM7|
在这种情况下,输出shd为;
col1 FIRMS_flag
|FIRMS Code: |**Unknown**| 1
|FIRMS Code: |**WAM7**|. 0
|FIRMS Code: |WAM7|. 0
我可以得到帮助来修改我的逻辑,以便获得正确的输出吗?感谢
因此,如果两个输入字符串中似乎都有子字符串LFD
,则搜索还不够,要得到结果的行也有:
,因此我们可以添加:
SELECT
column1
,column1 ilike '%lfd%' as _like
,column1 ilike '%lfd:%' as not_like
,(column1 not ilike '%lfd:%')::int as results_a
,iff(column1 ilike '%lfd:%', 0, 1) as results_b
,case when column1 ilike '%LFD:%' then 0 else 1 end as results_c
FROM VALUES
('|LFD: |**Wed 07 Jul 2021**|'),
('LFD & additional info')
它给出:
COLUMN1 | _LIKE | NOT_LIKE | RESULTS_ARESULTS_B | |
---|---|---|---|---|
|LFD:|**2021年7月7日星期三**| | 真 | 真0 | 0||
LFD&附加信息 | 真 | 假1 | 1 |