用case和正則表達式可以處理,不知道列1的值為3時怎么處理,所以我沒處理,你可以自己修改。
創(chuàng)新互聯(lián)建站是一家專業(yè)提供新密企業(yè)網站建設,專注與成都網站設計、網站建設、H5響應式網站、小程序制作等業(yè)務。10年已為新密眾多企業(yè)、政府機構等服務。創(chuàng)新互聯(lián)專業(yè)網站制作公司優(yōu)惠進行中。
with t as
( select 1 col1, 'a,d' col2 from dual
union all
select 1, null from dual
union all
select 2, 'b,c' from dual
union all
select 2, 'b,c' from dual
union all
select 2, null from dual
union all
select 3, 'a,c' from dual
)
select col1, case when col1 = 1
then case when col2 is null then 'a'
when col2 is not null then regexp_substr(col2,'([a-b])')
else col2 end
when col1 = 2
then case when col2 is null then 'b'
when col2 is not null then regexp_substr(col2,'([c-d])')
else col2 end
else col2 end
from t;
一個多條件判斷的sql:
select?
oper.opid,
oper.user_name,
oper.user_host,
case?
when?oper.oper_type?=?1??then?'System?Manager'?
when?oper.oper_type?=?2??then?'USER?Manager'
end?case,
case
when?oper.oper_object_type?=?1?then?'User'
when?oper.oper_object_type?=?2?then?'Role'
when?oper.oper_object_type?=?3?then?'Broker'
when?oper.oper_object_type?=?4?then?'QM?Manager'
when?oper.oper_object_type?=?5?then?'User?Group'
when?oper.oper_object_type?=?6?then?'Msg?Flow'
when?oper.oper_object_type?=?7?then?'Queue'
end?case
from?esb_log_user_oper?oper;
1、先創(chuàng)建一個簡單的數據表。
2、插入數據,順便復習插入數據了,最好多插幾個,查詢的時候更明顯。
3、select后面的字段是等下查詢結果所顯示的,where就是限制的條件,根據where查詢到對應的列。
4、如果字段里面有數字的話也是可以根據數字大小進行查詢的。
5、加入and語句可以同時限制兩個條件來查詢。
6、用%來查詢,百分號在字母前表示以什么字母開頭的,這里就是以名字為d開頭來查詢數據,同理把%放在后面就是以d結尾的名字。
sql查詢由兩部分組成
(1)查詢的顯示內容部分的表,也就是slelct后面的顯示部分的表,那么就一定是查詢的,比如這里的select t1.a,t2.b,t3.c,那么不管怎么說一定查詢了 t1,t2,t3三張表,如果只查詢了t1,t2兩張,那么t3部分的數據是怎么出來的?所以,只要有顯示的表就一定是查詢的表。包括在顯示部分(select中)的“子查詢”,也算在這部分。
(2)流程表或中間表,這部分的表也查詢了但不會出現(xiàn)在顯示中,比如
select t1.a,t2.b,from t1,t2,t3 where t2.id=t3.id and t1.aa=t3.aa,這里顯示的是t1,t2,但是查詢的時候t1,t2,t3都查詢了,只是t3屬于中間表不需要顯示,但是他也查詢了,不然怎么判斷t2.id=t3.id和t1.aa=t3.aa。當然這種也包括在where后面的子查詢,子查詢的表也算中間表。
當然以上是某種復雜的講解,如果想簡單的講解也容易,那就是凡是跟在from后面的表,都是查詢的表(左右連接也算在from后),如果這張表不需要查詢,那么干嘛要寫在這個語句中?當然包括子查詢的from,只要是from那么后面的表一定就是需要查詢的表。
select?*?
from?T_1?
where?
T_1?.C1?=?(select?to_char(SYSDATE-1,?'yyyymm')?||??DECODE(TO_CHAR(SYSDATE,?'dd'),?'08',?'01',?'15',?'08',?'22',?'16',?'01')?from?dual)?
and?T_1?.C1??=?(select?to_char(SYSDATE-1,?'yyyymm')?||?DECODE(TO_CHAR(SYSDATE,?'dd'),?'08',?'07',?'15',?'15',?'22',?'22',?'07')??from?dual);
SELECT
distinct?id,state,name
FROM
table1?main
WHERE
NOT?EXISTS(?select?1?FROM?table1?sub?where?main.id=sub.id?AND?main.statesub.state);
未經測試。。。純屬手寫,,如果以自己多年經驗來說的話。。這段話應該不會有多大問題。。。希望你自己仔細測試之后能夠提出寶貴意見!?。?/p>
本文題目:oracle查詢如何判斷,oracle怎么查看
網頁URL:http://weahome.cn/article/dssodie.html