select * from so_sale where decode(#pkcorp#,null,'a',so_sale_pk_corp) in (decode(#pkcorp#,null,'a',#pkcorp#))
首先谢谢楼上几位哥们的回复。也许我表达的不够清楚 其实主要是为了判断,#pkcorp#这个参数单值的形式是(‘a’),多值的话是(‘a’,‘b’) 要想实现的功能就是当#pkcorp#值为空的时候,就没有查询条件(相当于a=a),能全部查出来,如果有值的话(假设值为a) 那就相当于select * from so_sale where so_sale_pk_corp in(‘a’) 我现在碰到的问题是为多值的时候,decode语句不起作用。select * from so_sale where decode(#pkcorp#,null,'a',so_sale_pk_corp) in (decode(#pkcorp#,null,'a',#pkcorp#)) 这个语句就通不过,实在是搞不明白。 请大家帮忙解决下。实在感谢!!
DECODE的语法格式如下: DECODE(input_value,value,result[,value,result…][,default_result]); 其中: input_value 试图处理的数值。DECODE函数将该数值与一系列的序偶相比较,以决定最后的返回结果 value 是一组成序偶的数值。如果输入数值与之匹配成功,则相应的结果将被返回。对应一个空的返回值,可以使用关键字NULL于之对应 result 是一组成序偶的结果值 default_result 未能与任何一序偶匹配成功时,函数返回的默认值 其输入值只能是单值.你的#pkcorp#为多值时,该函数把第一个值后的其它输入值当作了函数的value参数.
请问有办法解决么。其实我想要的结果很简单,对于decode(#pkcorp#,null,'a',so_sale_pk_corp) in (decode(#pkcorp#,null,'a',#pkcorp#)这个语句 就是判断#pkcorp#是否有值,如果有值的话就返回 so_sale_pk_corp in (#pkcorp#) 反之就返回 a=a 也就是全部返回就是想得到这个结果。。请问能否实现呢?
其实主要是为了判断,#pkcorp#这个参数单值的形式是(‘a’),多值的话是(‘a’,‘b’)
要想实现的功能就是当#pkcorp#值为空的时候,就没有查询条件(相当于a=a),能全部查出来,如果有值的话(假设值为a)
那就相当于select * from so_sale where so_sale_pk_corp in(‘a’)
我现在碰到的问题是为多值的时候,decode语句不起作用。select * from so_sale where decode(#pkcorp#,null,'a',so_sale_pk_corp) in (decode(#pkcorp#,null,'a',#pkcorp#))
这个语句就通不过,实在是搞不明白。
请大家帮忙解决下。实在感谢!!
DECODE(input_value,value,result[,value,result…][,default_result]);
其中:
input_value 试图处理的数值。DECODE函数将该数值与一系列的序偶相比较,以决定最后的返回结果
value 是一组成序偶的数值。如果输入数值与之匹配成功,则相应的结果将被返回。对应一个空的返回值,可以使用关键字NULL于之对应
result 是一组成序偶的结果值
default_result 未能与任何一序偶匹配成功时,函数返回的默认值 其输入值只能是单值.你的#pkcorp#为多值时,该函数把第一个值后的其它输入值当作了函数的value参数.
就是判断#pkcorp#是否有值,如果有值的话就返回 so_sale_pk_corp in (#pkcorp#) 反之就返回 a=a 也就是全部返回就是想得到这个结果。。请问能否实现呢?