问题咨询,请问有这种实现方法吗
sql吧
全部回复
仅看楼主
level 1
比如我现在有张表是这样,然后我想在查询结果NAME列里直接把里面的变量name和number替换成TYPE列里的对应值,有法实现吗,让查询结果变成图2下面两行
2021年07月28日 01点07分 1
level 1
replace和substr好像都实现不了,因为变量前的名称是不固定的
2021年07月28日 01点07分 2
level 8
oracle?可以实现的,只是不需要用到自定义函数,把两个字段传禁区,两个遍历组装成字符串显示出来就行
2021年07月30日 01点07分 3
level 8
declare
aa varchar2(500) := '"names":"123公司","number":"20210727001"';
aa1 varchar2(50) ;
aa2 varchar2(50) :='"' ;
bb varchar2(500) := '用户名称${names},业务单号${number}';
bb1 varchar2(50) := '${';
bb2 varchar2(50) := '}';
cc varchar2(500);
DD varchar2(500);
begin
WHILE (instr(bb,bb1,1,1)>0)
LOOP
cc:=substr(bb,instr(bb,bb1,1,1)+length(bb1),instr(bb,bb2,1,1)-instr(bb,bb1,1,1)-length(bb1));
aa1:='"'||cc||'":';
dd:=substr(aa,instr(aa,aa1,1,1)+length(aa1)+length(aa2),instr(aa,aa2,instr(aa,aa1,1,1)+length(aa2),1)-length(aa2) );
bb:=REPLACE(bb, bb1||cc||bb2 , REPLACE(dd,aa2,''));
END LOOP ;
dbms_output.put_line(bb);
end;
2021年07月30日 02点07分 4
[大拇指]谢谢老哥,我研究一下去!
2021年07月30日 02点07分
1