ORACLE 實現行轉列 字串求和

2021-07-10 09:10:15 字數 836 閱讀 9025

使用關係型資料的實際專案中,難以避免變更增加字段,有時為了方便,不想加欄位,把多個值儲存乙個欄位中,用逗號或其他分隔符進行分隔;儲存解決了,但是展示有時就比較麻煩了,比如儲存的是編碼,現在要依次解析成名稱。

oracle提供非常簡單的方式來解決。

1、使用wm_concat(field_name)

在oracle中有乙個wmsys使用者,這個使用者和sys,system等使用者一樣,是oracle安裝的時候就建立的,主要負責oracle日常工作的管理(wm:work manager),wm開頭的函式是這個使用者下的函式。

舉例:select wm_concat(name) as name from user;

2、使用 listagg 函式,但如果是oracle11g,使用listagg效率更高,更強大,官方也更推薦這種寫法。

舉例:select listagg(name, ',') within group( order by name) as name from user;

實際情況舉例:現在資料庫中儲存了編碼,是用逗號分隔的,前台需要顯示名稱,也用逗號分隔;

select wm_concat(item_name) from sys_dict_item

where group_id = '0001'

and instr('function,action,folder',item_code) > 0;

執行結果:資料夾選單,功能選單,動作

結論:能在資料庫層解決問題,就不要在**層解決,能一條語句解決,就盡量不要使用過程或函式解決。不斷發掘oracle資料庫的強大之處,參考閱讀《oracel程式設計藝術》。

oracle 函式 實現行轉列

新增內容 增加另一種方法 需求 列出雇員表中同屬乙個部門的雇員名稱和部門號 select t.deptno 部門號,t.name 姓名 from employee t 結果 部門號 姓名 10 clark 10 king 10 miller 20 adams 20 ford 20 jones 20 ...

oracle實現繫結in字串

1.建立存放字串的陣列型別 create or replace type type bind as table of varchar2 4000 2.建立將字串轉成陣列然後返回給type bind函式。3.實現繫結的語法。update dw.task sms list p set p.state x...

Python 字串轉列表list eval 函式

eval 函式是python的內建函式!可以將字串的 號去掉,程式設計對應的表示式 描述 eval 函式用來執行乙個字串表示式,並返回表示式的值。語法 以下是 eval 方法的語法 eval expression globals locals 引數 expression 表示式。globals 變數...