首页 > DB2 & Sql Server > DB2 根据传入多个变量值,在where条件中直接过滤。
2014
05-05

DB2 根据传入多个变量值,在where条件中直接过滤。

需求:在DB2存储过程中,需要传入一个变量,但这个变量可以是多个值,比如传入的值可能是:11,22,33,44 。而且传入的类型的varchar类型,要求把传入的这个变量在where条件中过滤。

解析:如果传入的这个变量是number类型,可以直接在where条件中进行过滤,但由于是varchar类型,这里就不能直接在where条件中过滤,否则过滤的内容就是where id in (‘11,22,33,44’),这样很明显是错误的,正确的过滤应该是where id in (‘11’,’22’,’33’,’44’),所以这里需要进行简单的转换,我们来看一个简单的函数:

函数需要传入2个变量,一个就是传入的过滤值,另一个就是传入值的分隔符,函数调用方法

select * from table(etl.str_to_table_new( ‘,,c,,b,’ , ‘,’ )) ,输出结果会按照逗号分隔,把传入的值按照行来存储.

函数里面有容错机制,即使输入多个逗号,没有影响,这样就可以直接在where条件中过滤,写法:

最后编辑:
作者:Jerry
一个积极向上的小青年,热衷于分享--Focus on DB,BI,ETL