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不同的...