修改了Snowflake中的用户输入值 [英] Modified User Input value in Snowflake

查看:16
本文介绍了修改了Snowflake中的用户输入值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要读取用户传递的字符串,然后修改该字符串以获得所需的格式,并将其作为WHERE条件传递给视图。

示例 用户输入用逗号‘12345,78990,456789’分隔的材料编号列表。此字符串必须修改为

Match(";BOM_PATH&Quot;,‘12345’)OR Match(&Quot;BOM_PATH&Quot;,‘78990’)OR Match(&Quot;BOM_PATH&Quot;,‘456789’)

所以基本上我需要将所有材料从输入字符串中分离出来,并在名为BOM_PATH的字段中搜索这些单独的材料,该字段的值类似于‘12345:098765:784526’

我尝试使用Snowflake SQL UDTF,但它不支持变量或多个SQL语句,并且Snowflake视图不支持参数。

所以请给我一个如何在Snowflake中实现它的方法。

推荐答案

您可以通过STRTOK_TO_ARRAY()将输入转换为数组来使用ARRAY_CONTAINS()函数。

create or replace table bom_table(BOM_PATH varchar);
insert into bom_table (BOM_PATH)
values
('12345'),
('55555'),
('77778'),
('78990');

select * from bom_table 
where 
ARRAY_CONTAINS(BOM_PATH::variant,STRTOK_TO_ARRAY('12345,78990,456789',','));

或者,如果您的BAM_PACH也是分隔列表-请使用ARRAY_INTERSECTION()ARRAYS_OVERLAP()

insert into bom_table (BOM_PATH)
values
('12345:098765:784526'),
('12346:098766:784527'),
('12345:098765:777777'),
('12399:098765:777773');

select ARRAY_INTERSECTION(STRTOK_TO_ARRAY(BOM_PATH,':'),STRTOK_TO_ARRAY('12345,78990,456789',',')) from bom_table 
where ARRAYS_OVERLAP(STRTOK_TO_ARRAY(BOM_PATH,':'),STRTOK_TO_ARRAY('12345,78990,456789',','));

这篇关于修改了Snowflake中的用户输入值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆