Oracle中乙個自定義的拆分字串的函式 各種不懂求詳細講解

2025-07-04 02:09:54 字數 3715 閱讀 9754

1樓:網友

定義乙個str_split(自定義的table型別),並初始化。

給 table(或者可以看成陣列)的最後一行賦值。

oracle中怎樣將欄位字串以逗號為界擷取,並將得到的子串通過函式解釋後再拼接成乙個欄位

2樓:網友

001一定對應的是a嗎?002->b,003->c?

那就用replace()

select

replace(replace(replace('001,002,003','001','a'),'002','b'),'003','c')

from table

公司網路受限,沒法傳圖了。。。

只能發一下了,測試的資料。

select replace(replace(replace('001,002,003','001','a'),'002','b'),'003','c') from dual

replace(replace(replace('001,002,003','001','a'),'002','b'),'003','c')

a,b,c

3樓:網友

我猜測你是想把欄位aa以逗號為界擷取後放到3個變數裡,然後傳遞到函式中,你學習一下這兩個函式:substr和instr,前乙個是擷取字串的,後乙個是在乙個字串中找另乙個字串位置的。

4樓:藍色的魚

你還是查出值在php裡面用explode 打斷吧。

oracle字串的拆分和拼接

5樓:網友

這是json串,和資料庫沒有關係,如果純粹的字串拼接用 ||

oracle 怎麼拆分字串

6樓:一次偶然的相撞

拆分sql後:

select

substr('hello world',0,instr('hello world','o')) as 首,substr('hello world',instr('hello world','o')+1) as 尾。

from dual;

有什麼規定嗎?

abcdefgh」或是「a,b,c,d,e,f,g,h"

按符號拆分?按位置拆分?

substr()函式:擷取a-b之間的或a 。如:substr('hello world',0,5)擷取1-5或。

substr('hello world',0,instr('hello world','o'))擷取1-"o"的位置。

1.如果是","等符號:

select substr('hello world',0,instr('hello world','o')) from dual;

select substr('hello world',instr('hello world','o')+1) from dual;

或select substr('hello world',instr('hello world','o')+1,length('hello world')) from dual;

oracle sql 拆分字串的問題

7樓:小狂中

寫乙個oracle函式。

create or replace function getitemvalue(

segment varchar2, -原分段值i integer, -第幾段。

item varchar2) -項名,如'year'

return varchar2as

然後 select id,name,getitemvalue(desc,1,'year') year1, getitemvalue(desc,1,'dwzc') dwzc1, getitemvalue(desc,1,'yhdk') yhdk1, .from 表。

函式我就不寫了,自己當作練習吧。

8樓:網友

這是什麼啊?字串還是什麼東西?json資料?老實的用程式去解析吧。oracle 處理結構化資料是內行,這種非結構化資料還是去找nosql吧。

如何在oracle中使用類似split函式分割字串

9樓:龍氏風采

(1)定義split_type型別:

create or replace type split_type is table of varchar2 (4000) /(2)定義split函式:

create or replace function split (p_str in varchar2, p_delimiter in varchar2) return split_type is j int := 0; i int := 1; len int :

0; len1 int := 0; str varchar2 (4000); my_split split_type := split_type ()begin len :

length (p_str); len1 := length (p_delimiter); while j < len loop j := instr (p_str, p_delimiter, i); if j = 0 then j :

len; str := substr (p_str, i); my_; my_split (my_ := str; if i >= len then exit; end if; else str :

substr (p_str, i, j - i); i := j + len1; my_; my_split (my_ := str; end if; end loop; return my_split; end split; /(3)儲存過程中,使用類似。

for t in ( select a,b,c,d from table (split('1,2,3,4',',')) loop--注意下面的inserti語句,varchar型別的值需要補充引號上去execute immediate ' insert into tablename set fieldname = '|| execute immediate 'commit';

end loop;

的查詢語句,把分開的結果拼成sql語句並寫入到表中。

oracle 根據特殊字元將乙個欄位拆分成多個欄位

10樓:網友

用正則:

select regexp_substr('abcd+北京市朝陽區富貴小區3號樓1單元101+100000+平郵', '[^+', 1, 1),regexp_substr('abcd+北京市朝陽區富貴小區3號樓1單元101+100000+平郵', '[^+', 1, 2),regexp_substr('abcd+北京市朝陽區富貴小區3號樓1單元101+100000+平郵', '[^+', 1, 3),regexp_substr('abcd+北京市朝陽區富貴小區3號樓1單元101+100000+平郵', '[^+', 1, 4)

from dual

如果你想要列都自動的話,就需要 table(cast(multiset + pivot

oracle中怎麼拆分乙個字串欄位為2個數值欄位

11樓:做他

什麼樣的字串?

以什麼方式分?

題主,要學會問問題,才能得到你想要的答案。

如何編寫和定義過程,用c語言編寫一個自定義的函式時的基本步驟

sql server的語法 create procedure proc name para1 int assql statement mysql的語法 create procedure proc name para1 int sql statement 上面的para1是引數,如果不需要可以省略括號...

求乙個最簡單的oracle查詢儲存過程。

如何檢視oracle包體內的儲存過程 開啟pl sql,新建sql視窗。 輸入包體的使用者名稱及包名,例如使用者名稱。包名,選中右擊,選擇view spec body檢視,包體有兩頁,第頁為包裡過程的目錄,第也為具體內容。 輸入包體的使用者名稱 包名及包裡的過程名,例如使用者名稱。包名。過程名,按住ctrl,然後右...

C怎麼定義未知變數的陣列C怎麼定義一個未知變數的陣列?

如果事先知道x,y的範圍,比如小於1000,y小於2000,那麼就定義m 1000 2000 如果不能確定 就使用向量 vector 通過push back 版的方法存入權資料。所謂陣列,就是相同資料型別的元素按一定順序排列的集合,就是把有限個型別相同的變數用一個名字命名,然後用編號區分他們的變數的...