參考很多博文,發現都沒有想要的,無奈之下,自己動手,豐衣足食,廢話不多說,一下是需求:
資料:小明、小白、小張、小陳
目標:列數根據字串動態生成
構建plsql函式:
create or replace function f_new_rowit(in_text varchar2,--要擷取的字串
fh varchar2,--擷取識別符號
n number)--按第幾個符號擷取
return varchar2 is
result varchar2(4000);
begin
if n > 1 then
select substr(in_text,
decode(instr(in_text, fh, n - 1, n - 1),
0,0,
instr(in_text, fh, n - 1, n - 1) + 1),
decode(sign(instr(in_text, fh, n, n) -
instr(in_text, fh, n - 1, n - 1)),
1,(instr(in_text, fh, n, n) -
instr(in_text, fh, n - 1, n - 1)) - 1,
-1,length(in_text),
0,0)
)into result
from dual;
else
select substr(in_text, 0, instr(in_text, fh, 1, 1) - 1)
into result
from dual;
end if;
return(result);
end f_new_rowit;
成果展示:
--指令碼 f_new_rowit(字串,擷取識別符號,第幾次擷取)
select f_new_rowit('小明、小白、小張、小陳','、',1) 第1列,
f_new_rowit('小明、小白、小張、小陳','、',2) 第2列,
f_new_rowit('小明、小白、小張、小陳','、',3) 第3列,
f_new_rowit('小明、小白、小張、小陳','、',4) 第4列,
f_new_rowit('小明、小白、小張、小陳','、',5) 第5列,
f_new_rowit('小明、小白、小張、小陳','、',6) 第6列
from dual;
執行結果:
總結:此方法可根據實際情況增加列數(第n列),如果不能確定有多少列,最好先求出字串中擷取識別符號的個數
Oracle 根據分隔符分隔字串
為了讓pl sql 函式返回資料的多個行 必須通過返回乙個 ref cursor 或乙個資料集合來完成 ref cursor 的這種情況侷限於可以從查詢中選擇的資料 而整個集合在可以返回前 必須進行具體化 oracle 9i 通過引入的管道化表函式糾正了後一種情況 表函式是返回整個行的集 通常作為乙...
python字串分割,保留分隔符
這樣的 在裡面填寫分隔符,不會保留分隔符。import re a 你在北京 我 你是誰?在幹嘛 sentences re.split r s a print sentences 結果 你在北京 我 你是誰 在幹嘛 想要保留分隔符,需要加入 就是 這樣就會保留分隔符 import re a 你在北京 ...
字串按特定分隔符反轉
阿里巴巴的實習生筆試題,實現將字串按特定分隔符進行反轉,如 www.taobao.com 反轉後為 com.taobao.www 要求時間複雜度為o n 空間複雜度為o 1 解題思想 用兩個指標記錄分隔符之間的子字串,然後先將子字串進行反轉,逐段全部反轉後,再將整個字串進行一次反轉。cpp view...