真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

oracle如何排除 oracle如何排除子查詢?yōu)榭盏臄?shù)據(jù)

Oracle 查詢時如何排除某一列

無法排除某一列,只能查詢中寫出其他列,而不寫不查詢的這列,如:

成都創(chuàng)新互聯(lián)作為成都網(wǎng)站建設(shè)公司,專注成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計,有關(guān)成都企業(yè)網(wǎng)站建設(shè)方案、改版、費用等問題,行業(yè)涉及發(fā)電機維修等多個領(lǐng)域,已為上千家企業(yè)服務(wù),得到了客戶的尊重與認(rèn)可。

如果這里不查詢MGR列,則可以通過如下語句:

select?empno,ename,job,hiredate,sal,comm,deptno?from?emp;

結(jié)果如圖:

oracle如何排除子查詢?yōu)榭盏臄?shù)據(jù)

使用minus集合操作符號。

_inus這個集合操作符號的作用是從一個結(jié)果集合中減掉另一個結(jié)果集中數(shù)據(jù),也就是說從一個結(jié)果集中去除兩個結(jié)果集中的共有部分。

oracle select * 查詢時候怎么排除掉某個字段

create table temp_a as select * from a;

alter table temp_a drop (要刪除的字段名);

insert into b select * from temp_a;

commit;

執(zhí)行一下上面的腳本。看看是否好用?!耙獎h除的字段名”就是你指定的要排除掉的某個字段的名稱。

oracle排除多條件

工作需求:根據(jù)不同條件查詢數(shù)據(jù),目前有下拉列表和單選按鈕兩種

如果只是查詢具體的條件,那很簡單,只需要在where 條件之后加上相應(yīng)的條件即可,像這樣:where type = ‘門診’。當(dāng)查詢的是全選或全部時,顯然的就要把相應(yīng)的條件給去除,如果你是使用mybatis,那也很簡單,只需要在xml映射文件里加上一些判斷條件,像這樣:

select*from user

id=#{id}

and type=#{type}

and gender=#{gender}

但是項目中的需求往往千奇百怪,由于我的SQL語句是寫在json配置文件里的,而我又使用的是mybatis框架,我沒辦法將SQL語句直接寫在mybatis的xml映射文件里,我只有把SQL作為一個參數(shù)傳遞給映射文件,就像上面?zhèn)鬟fid,type,gender一樣。

因為我傳遞的是一句SQL語句而不是具體條件,當(dāng)我的SQL語句里出現(xiàn)特殊字符如比較字符時XML是會幫我轉(zhuǎn)義的,我不需要XML去轉(zhuǎn)義我的SQL,所以我要使用

將我的SQL語句包裹起來,這樣SQL語句就不會被轉(zhuǎn)義了。這里使用${ SQL }而不是#{ SQL },#將傳入的數(shù)據(jù)都當(dāng)成一個字符串,會對自動傳入的數(shù)據(jù)加一個雙引號,$將傳入的數(shù)據(jù)直接顯示生成在sql中,顯然我的SQL語句不需要加雙引號。(這里我也先不考慮使用$會導(dǎo)致SQL注入的問題,后期我也會去做SQL檢查)

現(xiàn)在背景已經(jīng)明確,如果想完成需求,我只有在SQL進入XML映射文件之前,將一些條件處理掉。SQL是寫在json配置文件里的,預(yù)先的條件也是寫死的,如下:

"sql":"SELECT nvl(sum(a.ssrc),0) as count FROM CB_ME_YLZL a,CB_DI_DATE b,CB_DI_YLJG c,CB_DI_JZLX d WHERE a.sjid=b.sjid and a.yljgid=c.yljgid and a.jzlxid=d.jzlxid and c.yljgdj=‘3‘ and c.yljgmc = #{select1_val_select} AND type = #{radio1_val_radio}"

當(dāng)用戶選擇全選或是全部時,我需要把

and c.yljgmc = #{select1_val_select} AND type = #{radio1_val_radio}

去掉。不是全選或全部時我需要把

#{select1_val_select} 和 #{radio1_val_radio}

替換成相應(yīng)的條件。

代碼如下:

/*** 處理SQL語句

*

*@paramsql

*@return

*/

public staticString dealSQL(String sql, String str) {

sql= sql.trim().toUpperCase().replaceAll(" +", " ");int form = sql.indexOf(" FROM ");

String begin= sql.substring(0, form);

begin= begin.replaceAll(" AS ", " AS C_");

String end=sql.substring(form, sql.length());

sql= begin+end;

String[] split1= str.trim().toUpperCase().replaceAll("‘", "").replaceAll("\"", "").split(",");for(String s : split1) {if(StringUtils.isNotBlank(s)) {

String[] split2= s.split(":");if(sql.contains(split2[0])) {if(split2[0].contains("VAL_RADIO") || split2[0].contains("VAL_SELECT")) {if(split2[1].equals("全選") || split2[1].equals("全部")) {

sql= removeSQL(sql,"#{"+split2[0]+"}");

}else{

sql= sql.replace("#{"+split2[0]+"}", "‘" + split2[1] + "‘");

}

}else{

sql= sql.replace("#{"+split2[0]+"}", "‘" + split2[1] + "‘");

}

}

}

}returnsql;

}

json配置文件里規(guī)定需要展現(xiàn)的字段都要使用as ** 作為別名,但是如果別名為數(shù)字或特殊字符的話,oracle是不認(rèn)的,如果別名使用雙引號引起來,orace認(rèn)但json文件又不認(rèn)了,所以我使用最low的辦法,將所有別名加上一個C_,這樣數(shù)據(jù)庫就認(rèn)了。

看一下??removeSQL方法:

/*** 去除SQL語句某查詢條件

*@paramsql

*@paramchoice

*@return

*/

public staticString removeSQL(String sql,String choice) {int cho_first =sql.indexOf(choice);int before_and = sql.lastIndexOf(" AND ", cho_first);int before_where = sql.lastIndexOf(" WHERE ", cho_first);int after_and = sql.indexOf(" AND ", cho_first);int after_where = sql.indexOf(" WHERE ",cho_first);if(before_where != -1) {if(before_and != -1) {if(before_and before_where) {

sql= sql.replace(sql.substring(before_and, cho_first), " ").replace(choice, " ");

}else{if(after_and != -1) {if(after_where != -1) {if(after_and

sql= sql.replace(sql.substring(before_where+7, after_and+5), " ");

}else{

sql= sql.replace(sql.substring(before_where, cho_first), " ").replace(choice, " ");

}

}else{

sql= sql.replace(sql.substring(before_where+7, after_and+5), " ");

}

}else{

sql= sql.replace(sql.substring(before_where, cho_first), " ").replace(choice, " ");

}

}

}else{if(after_and != -1) {if(after_where != -1) {if(after_and

sql= sql.replace(sql.substring(before_where+7, after_and+5), " ");

}else{

sql= sql.replace(sql.substring(before_where, cho_first), " ").replace(choice, " ");

}

}else{

sql= sql.replace(sql.substring(before_where+7, after_and+5), " ");

}

}else{

sql= sql.replace(sql.substring(before_where, cho_first), " ").replace(choice, " ");

}

}

}returnsql;

}

邏輯也就是:當(dāng)條件在不同地方,處理方式不同而已,下面是幾種羅列的可能存在條件的地方,上面代碼就是針對這些不同地方,將這些條件連同其前的and或者where(不影響其后的and條件使用的where,如下圖第二條語句第一處位置的條件)去掉。(針對復(fù)雜的SQL,如使用with as 將查詢數(shù)據(jù)做臨時表,之后再使用select查詢臨時表的,這些代碼是不能處理的)

oracle使用exp命令導(dǎo)出數(shù)據(jù)時排除某些不需要的表

切換到oracle用戶 su - oralce并執(zhí)行下面的導(dǎo)出命令:

expdp test/test@ora11g directory=dump_dir dumpfile=test.dmp

EXCLUDE=TABLE:"IN

('TABLE01','TABLE02')"


網(wǎng)站名稱:oracle如何排除 oracle如何排除子查詢?yōu)榭盏臄?shù)據(jù)
本文URL:http://weahome.cn/article/hjjpgh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部