oracle資料庫日常使用總結

2021-07-16 21:22:56 字數 1874 閱讀 4431

**使用規則:**decode(條件,值1,返回值1,值2,返回值2,…值n,返回值n,預設值)

方法原理:

if 條件=值1 then

return(翻譯值1)

elsif 條件=值2 then

return(翻譯值2)

......

elsif 條件=值n then

return(翻譯值n)

else

return(預設值)

end if

decode函式與一系列巢狀的 if-then-else語句相似。但是使用更加便捷簡單。開發中主要可用於:

1. 對不同取值的資料進行計數

在統計策略專案的成功和失敗情況時,直接使用count函式無法完成分別統計成功和失敗的次數。此時可以使用sum函式和decode函式結合,例如sum (decode(h.service_status,'1',1,0)) as success,若h.service_status為』1』(其中』1』表示成功),則返回數字1,通過sum函式進行求和,即可求得所有service_status為』1』的次數

2. 將當前值翻譯為其他值

由上例已經可以看出,在使用decode(h.service_status,'1',1,0)時,將字元型的1翻譯為了數字1,使其可以進行求和操作

同一條資料中不同列的字串之間進行拼接操作

oracle中可以使用||concat兩種方式進行字串拼接

使用||方式:'字串1' || '字串2' || '字串3' || '字串4'

注意:這種方式進適用於oracle資料庫,在mysql或其他資料庫中不能採用這種方式

使用concat方式:select concat('字串1','字串2') from tablename

注意:concat()在oracle中只能拼接兩個字串,如果需要拼接多個字串,可採用多個concat()巢狀拼接多個字串。但在mysql中,concat()函式是可以同時拼接多個字串的,用法如下

`select concat('字串1','字串2','字串3','字串4') from tablename`
字串聚合拼接操作

常用的有

wmsys.wm_concat (從oracle 10g開始支援)

listagg(measure_expr,delimiter) within group(order_by_clause) over(query_partition_clause) (從oracle 11g r2開始支援)

sys_connect_by_path (從oracle 9i開始支援)

wmsys.wm_concat用法

select wmsys.wm_concat(colname1) 

from tablename

group

by colname2;

預設分隔符為逗號,如果想替換為其他分隔符,可採用如下方法

select

replace(wmsys.wm_concat(colname1),',','、')

from tablename

group

by colname2;

其餘兩種情況後續補充

Oracle 資料庫日常維護 1

七 資料庫壞塊的處理 當 oracle資料庫出現壞塊時,oracle會在警告日誌檔案 alert sid.log 中記錄壞塊的資訊 ora 01578 oracle data block corrupted file 7,block ora 01110 data file oracle1 orada...

Oracle資料庫的日常使用命令 1

1.啟動和關閉資料庫 sqlplus nolog sql conn as sysdba sql startup 若啟動檔名不是oracle預設的檔名,則啟動時應帶啟動目錄與檔名 sql startup pfile 停止 sql shutdown immediate 2.控制監聽 1 啟動監聽 lsn...

Oracle資料庫的日常使用命令 6

資料庫的邏輯恢復分為表 使用者 資料庫三種模式。1.表模式 恢復方法為 imp imuse01 imuse01 file 檔名 log log檔名 rows y commit y buffer y ignore y tables 表名1,表名2,表名3,表名4,引數說明 buffer 緩衝區大小 f...