修改了Snowflake中的用户输入值 [英] Modified User Input value in Snowflake
本文介绍了修改了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屋!
查看全文