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技术网站》等相关内容

参考技术B 很多重的多表查询

单表多个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条件的拼接,拼接好别的表使用作为查询条件,该怎么写的主要内容,如果未能解决你的问题,请参考以下文章

单表多个where 条件进行查询拼接小妙用

写sql时,使用where 1=1进行条件拼接时 如果第一个条件不成立时,后面的条件会继续执行吗

sql查询语句怎么拼接字符串

oracle 语句 字段拼接(可换行)

oracle中拼接查询语句

sql语句如何按条件拼接字符串