十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
好像是標(biāo)準(zhǔn)sql吧,就這么寫啊。不過大表可不能這么做哦,太占資源了。
成都創(chuàng)新互聯(lián)公司專注于企業(yè)全網(wǎng)整合營(yíng)銷推廣、網(wǎng)站重做改版、西陵網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、成都h5網(wǎng)站建設(shè)、成都商城網(wǎng)站開發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為西陵等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
補(bǔ)充:
oracle里面有“+”的,不過我懷疑你是不是要拼兩個(gè)字符串。正統(tǒng)數(shù)據(jù)庫,包括oracle和db2拼接字符串都是采用雙豎線“||”,加號(hào)只能用于使兩個(gè)整型或者浮點(diǎn)型數(shù)值相加。
這需要看你的相關(guān)字段的類型的。如果是數(shù)值型,需要首先轉(zhuǎn)換為字符型,再合并,例如:
select
*
from
a
where
to_char(col001)||to_char(col002)
not
in
(select
to_char(col001)||to_char(col002)
from
b)
如果是字符型,可以直接合并:
select
*
from
a
where
col001||col002
not
in
(select
col001||col002
from
b)
如果是date型,同樣轉(zhuǎn)換為字符,具體查手冊(cè)。
但是你這種寫法,怎么說呢,不太好把,首先這并不是嚴(yán)格按照你所描述的邏輯,舉例來說,如果表a字段是:"12","3",表b是:"1","23"那又會(huì)怎樣?另外,not
in總是執(zhí)行全表掃描,效率不高,這樣寫會(huì)好一些:
select
a.*
from
a
left
join
b
on
(a.col001
=
b.col001
and
a.col002
=
b.col002)
where
b.col002
is
null
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);
未經(jīng)測(cè)試。。。純屬手寫,,如果以自己多年經(jīng)驗(yàn)來說的話。。這段話應(yīng)該不會(huì)有多大問題。。。希望你自己仔細(xì)測(cè)試之后能夠提出寶貴意見?。?!
oracle的if語句采用decode函數(shù)。
DECODE(value,if1,then1,if2,then2,if3,then3,...,else)
表示如果value 等于if1時(shí),DECODE函數(shù)的結(jié)果返回then1,...,如果不等于任何一個(gè)if值,則返回else。
Oracle數(shù)據(jù)庫是對(duì)標(biāo)準(zhǔn)sql語言的過程化擴(kuò)展,因此產(chǎn)生了pl/sql語言。其中的if語句大量使用使得程序模塊化的功能方便實(shí)用?,F(xiàn)在要討論的是if語句的基本使用方法。
連接數(shù)據(jù)庫
請(qǐng)輸入用戶名: ?scott/123456
設(shè)置環(huán)境變量
SQL set serveroutput on
定義兩個(gè)字符串變量,然后賦值,接著使用if……then語句比較兩個(gè)字符串變量的長(zhǎng)度,并輸出比較結(jié)果。
declare
a varchar(10);
b varchar(10);
begin
a:='beijing';
b:='guangdong';
if length(a)length(b)
then dbms_output.put_line('ab');
end if;
end;
過if……then……else語句實(shí)現(xiàn)只有年齡大于等于56歲,才可以申請(qǐng)退休,否則程序會(huì)提示不可以申請(qǐng)退休。
declare
a number(10);
begin
a:=x;
if a=56
then dbms_output.put_line('可以申請(qǐng)退休');
else dbms_output.put_line('不可以申請(qǐng)退休');
end if;
end;
制定一個(gè)月份數(shù)值,然后使用if……then……elsif語句判斷它所屬的季節(jié),并輸出季節(jié)信息。
declare
mon number(10);
begin
mon:=x;
if mon=3 or mon=4 or mon=5
then dbms_output.put_line('春節(jié)');
elsif mon=6 or mon=7 or mon=8 then dbms_output.put_line('夏季');
elsif mon=9 or mon=10 or mon=11 then dbms_output.put_line('秋季');
elsif mon=12 or mon=1 or mon=2 then dbms_output.put_line('冬季');
end if;
end;
制定一個(gè)季度數(shù)值,然后使用case語句判斷它所包含的月份信息并輸出。
declare
ss number(10);
begin
ss:=x;
case
when ss=1 then dbms_output.put_line('包含月份3,4,5');
when ss=2 then dbms_output.put_line('包含月份6,7,8');
when ss=3 then dbms_output.put_line('包含月份9,10,11');
when ss=4 then dbms_output.put_line('包含月份12,1,2');
end case;
end;
1、創(chuàng)建測(cè)試表,
create table test_isnum(id number, value varchar2(20));
2、插入測(cè)試數(shù)據(jù),
insert into test_isnum values(1,'a');
insert into test_isnum values(2,329);
insert into test_isnum values(4,'15');
insert into test_isnum values(6,'2c');
commit;
3、查詢表中所有記錄,select t.*, rowid from test_isnum t,
4、編寫sql,判斷value字段,記錄為數(shù)字的內(nèi)容,
select t.*,
?case
? ?when not regexp_like(value, '\D') then
? ? '是'
? ?else
? ? '否'
?end as "是否數(shù)字"
from test_isnum t;