oracle 中where条件的拼接,拼接好别的表使用作为查询条件,该怎么写
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle 中where条件的拼接,拼接好别的表使用作为查询条件,该怎么写相关的知识,希望对你有一定的参考价值。
这张表,我要拼接成where a>10 and b<20 and a<15 在别的表查询时,使用这个条件,我要怎么做
单纯的通过sql应该是比较麻烦吧,给出一个思路
数据库定义一个函数fn_xxx,
declare
--定义变量记录拼接结果
v_result varchar2(100):='';
begin
--循环拼接
for x in (select a1,a2,a3 from 表名 where 条件) loop
v_result:=v_result||' and '|| x.a1||' and '||x.a2||' and '||x.a3
end loop;
--最终的结果类似于 and a>10 and b<20 and a<15 这样
end;
这个函数,返回的就是需要的字符串
使用的时候看看怎样把这个函数放到sql里,这里要注意 参考技术A 如果在程序代码中,直接拼SQL字符串,再执行拼好的串追问
在oracle中呢
追答oracle中执行参考 执行动态SQL, EXECUTE IMMEDIATE ‘select | delete ....’ [ INTO ....];
查看如《PL/SQL执行动态SQL(一) - - ITeye技术网站》等相关内容
单表多个where 条件进行查询拼接小妙用
单表多数据进行拼接
DROP table if EXISTS tmp_table; CREATE TEMPORARY TABLE tmp_table ( 创建临时表 SELECT p1q04,p2q02, p2q04, p1q10a, p2q06 FROM dc_cyfgqydj_data ); select count(1) c1, count(P1Q04=1 or P2Q02=1) as c2 from tmp_table;
案例2
先看sql
select count(1), COUNT(if(QuesPublic=2, True, Null)) as count from meta_questionnaire where ProjectID=2017091115151009297510476321 and QuesStatus=1;
需求,其实就是想得到quespublic所有的count, 和当quespublic=2的时候count, 注意if的意思,其实就是当满足时候为True, 不满足时候为Null, 只有为Null的时候不计算,而为False时候计算
第二个妙用
group可以加两个参数
group by A1, A2
以上是关于oracle 中where条件的拼接,拼接好别的表使用作为查询条件,该怎么写的主要内容,如果未能解决你的问题,请参考以下文章