如下查询语句:
select t.* from t1 t where t.t_number in(
case t.flag when 1 then ('''001'''||','||'''002''') else ('''003'''||','||'''004''') end
)在表中有符合上述查询的记录,可用以上查询语句查不出结果,我想是不是 case t.flag when 1 then ('''001'''||','||'''002''') else ('''003'''||','||'''004''') end 这句至行的结果是一个字符串,而之后再与in语句结合时整个就被解析为一个完整的字符串了,没有解析逗号运算符把它作为一个集合来处理。请问这种情况有什么解决办法吗?请各位支招啊?说明:'''001'''||','||'''002''' 此字符串是用java程序获取,并接到sql语句中的
select t.* from t1 t where t.t_number in(
case t.flag when 1 then ('''001'''||','||'''002''') else ('''003'''||','||'''004''') end
)在表中有符合上述查询的记录,可用以上查询语句查不出结果,我想是不是 case t.flag when 1 then ('''001'''||','||'''002''') else ('''003'''||','||'''004''') end 这句至行的结果是一个字符串,而之后再与in语句结合时整个就被解析为一个完整的字符串了,没有解析逗号运算符把它作为一个集合来处理。请问这种情况有什么解决办法吗?请各位支招啊?说明:'''001'''||','||'''002''' 此字符串是用java程序获取,并接到sql语句中的
1 张三 001 1
2 李四 002 1
3 王五 003 1
4 赵六 004 1
表数据就是这样的我觉得数据应该没有问,,应为如果下查询:
select t.* from t1 t where t.t_number in(
case t.flag when 1 then ('001') else ('003') end
)或是
select t.* from t1 t where t.t_number in('001','002') where t.flag=1
这两种查询方法可以查出结果来的
1 张三 001 1
2 李四 002 1
3 王五 003 1
4 赵六 004 1
表数据就是这样的我觉得数据应该没有问,,应为如果下查询:
select t.* from t1 t where t.t_number in(
case t.flag when 1 then ('001') else ('003') end
)或是
select t.* from t1 t where t.t_number in('001','002') where t.flag=1
这两种查询方法可以查出结果来的
declare
str varchar2(200);
num number ;
num2 number ;
begin
num :=2;
str := 'select '|| num || ' from dual';
execute immediate str into num2;
dbms_output.put_line(num2);
end;