Oracle字串的拆分和拼接,Oracle字串的拆分和拼接

2022-02-20 06:20:27 字數 5739 閱讀 3539

1樓:匿名使用者

如果是固定的格式,那就好辦,檢測欄位中的「,」分割成四段,然後按要求接起來。

使用函式好些,可以直接呼叫。

函式寫好:已經測試過。

create or replace function json_montage (json in varchar2) return varchar2 is

in_json  varchar2(4096);

v_json  varchar2(4096) default '],j3}';

v_j1  varchar2(4096);

v_j2  varchar2(4096);

v_j3  varchar2(4096);

v_j4  varchar2(4096);

v_split varchar2(10) default ',';

len number(10) default 0;

place number(10) default 2;

begin

in_json :=json;

/*原字串:

期望轉換後的:

],"autoreceive":false}

*/in_json := rtrim(ltrim(in_json));

place := instr(in_json,v_split,2,1);

len := place -1 -1;

v_j1 := substr(in_json,2,len);

len := instr(in_json,v_split,2,2) - place -1-0;

v_j2 := substr(in_json,place+1,len);

place := instr(in_json,v_split,2,2);

len := instr(in_json,v_split,2,3) - place -1-0;

v_j3 := substr(in_json,place+1,len);

place := instr(in_json,v_split,2,3);

len := length(in_json) - place -1;

v_j4 := substr(in_json,place+1,len);

v_json := '],' || v_j3 || '}';

if v_json = '],j3}' then

v_json :='error';

end if;

return v_json;

exception

when no_data_found then

null;

when others then

raise;

end json_montage;/

2樓:匿名使用者

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

oracle同一列字串拼接

3樓:匿名使用者

大致如下:

select id, wmsys.wm_concat(name) as name

from tabname

group by id

4樓:匿名使用者

老版本可以使用wm_concat

select wm_concat(name) from tbname ;

11gr2可以使用listagg

select listagg(name,',') within group(order by name) from tbname ;

oracle中怎樣將一欄位的值擷取出來並拼接另一個字串

5樓:匿名使用者

oracle的字串連線用 ||

select substr(t.name0,4) || '00' from table t

oracle 字串拼接

6樓:浪小客

1、建立新的測試資料表,或者可以選擇要測試的現有表資料。這只是測試字串連線,不會影響資料內容。從t_base_province t中選擇*,其中t.id = 1。

2、首先介紹下一個||滿足連線,||可以一次連線多個字串,選擇t.provinceid ||來自t_base_province的t.province t其中t.id = 1。

3、由||連線除了欄位和欄位之間的字串連線之外,還可以將方法連線到常量字串選擇'省:'||來自t_base_province的t.province t其中t.id = 1。

4、您還可以使用concat函式連線到字串,傳入函式字串1和字串2,兩個引數。引數的方式也支援常量字串從t_base_province t中選擇concat(t.provinceid,t.

province),其中t.id = 1。

5、如果要連線的字串有兩個以上的引數,如下例所示,則有4個字串連線。執行後,測試發現異常,引數無效。從t_base_province t中選擇concat('省id:

',t.provinceid,'省:',t.

province),其中t.id = 1; -  error ora-00909:引數數量無效。

6、對於上述問題,如果連線引數大於2,則可以選擇concat巢狀方法。從t_base_province t中選擇concat(concat('省id:',t.

provinceid),'省:'),t.province),其中t.

id = 1。

7樓:康熙轉世

select t1.b || '-' || t2.bfrom (select b from a where d = 1) t1,

(select replace(wm_concat(c), ',', '-') b

from a

start with d = 1

connect by b = prior c) t2

8樓:齊文

select t1.b || '-' || t2.bfrom (select a, b from a where d = 1) t1,

(select a, replace(wm_concat(c), ',', '-') b

from a

start with d = 1

connect by b = prior cgroup by a) t2

where t1.a = t2.a

9樓:聆雨閣

select t1.b || t2.b

from t1 ,

(select a,sys_connect_by_path(c,'-') b

from t1

where c='l'

start with b='x'

connect by prior c = b) t2where t1.a = t2.a and t1.b='x';

oracle 怎麼拆分字串

10樓:一次偶然的相撞

拆分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;

11樓:杜爺1號

**如下:

create or replace type str_split is table of varchar2 (4000);

create or replace function splitstr(p_string in varchar2, p_delimiter in varchar2)

return str_split

pipelined

asv_length number := length(p_string);

v_start number := 1;

v_index number;

begin

while(v_start <= v_length)

loop

v_index := instr(p_string, p_delimiter, v_start);

if v_index = 0

then

pipe row(substr(p_string, v_start));

v_start := v_length + 1;

else

pipe row(substr(p_string, v_start, v_index - v_start));

v_start := v_index + 1;

end if;

end loop;

return;

end splitstr;

建立完畢後,我們來測試一下,例如執行如下sql:

select * from table(splitstr('hello,cnblogs!',','));

oracle sql 實現查詢時把一字串按逗號分割,返回分割後的份數?

12樓:育知同創教育

oracle 中可以用connect by把字串按都好分割:

比如定義字串:

pv_no_list :='23,34,45,56';

select distinct regexp_substr (pv_no_list,'[^,]+',1,level) as "token"

from dual

connect by regexp_substr (pv_no_list,'[^,]+',1,level) is not null

order by 1

返回結果:

token

2334

4556

13樓:雨夜ぜ狂想

declare @a varchar(32),@n int =1set @a='張三,李四,王五,趙六'   --給@a賦值while charindex(',',@a)>0begin

set @a=substring(@a,charindex(',',@a)+1,len(@a)-charindex(',',@a))

set @n=@n+1

endselect @n     --得到一個字元被','分割的份數

html字串拼接,html字串拼接流程?

假設你的 tbody detail 是一個div標籤那麼後的效果是 執行後得出alert的內容是 相當於jquery自動補全了標籤,所以你應該寫 所有項都直接用字串拼接的方式 var resulthtml for var i 0,len datas.length i len i resulthtml...

字串指標移動問題,關於字串和指標的問題

因為 p 沒有分配記憶體,指向的是系統的記憶體,那段記憶體是隻讀的,因此改變那裡的值是錯誤的 char a abcde char p a p 1 w 這樣是正確的,因為a那段記憶體是可寫的 你上面的,你可以理解為 const char a abcde char p a p 1 w 錯誤,因為a是co...

mysql中字串的拼接,能不能不使用concat函式

concat ws 函式,表示concat with separator,即有分隔符的字串連線 如連線後以逗號分隔 mysql select concat ws 11 22 33 concat ws 11 22 33 11,22,33 1 row in set 0.00 sec 和concat不同的...