Oracle中怎样将字段字符串以逗号为界截取,并将得到的子串通过函数解释后再拼接成一个字段 10

字符串中的逗号数量不定,如字段aa的字符为“001,002,003“,需解释为”a,b,c“,请各位大侠写的详细点...小弟是新手... 字符串中的逗号数量不定,如字段aa的字符为“001,002,003“,需解释为”a,b,c“,请各位大侠写的详细点...小弟是新手 展开
 我来答
maxiao071
推荐于2018-05-17 · 超过15用户采纳过TA的回答
知道答主
回答量:43
采纳率:100%
帮助的人:35万
展开全部

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
太平岁年丰9
2013-05-31 · TA获得超过1231个赞
知道小有建树答主
回答量:1017
采纳率:100%
帮助的人:1092万
展开全部
我猜测你是想把字段aa以逗号为界截取后放到3个变量里,然后传递到函数中,你学习一下这两个函数:substr和instr,前一个是截取字符串的,后一个是在一个字符串中找另一个字符串位置的
追问
嗯,不固定3个变量,因为字符串有可能是“001”,或者是“001,002”,还可能是更多,所以我要把截取后的字符串放进相应数量的变量里,然后传递到函数中进行解释,最后并把解释后的结果重新放到一个字段中。我已经知道怎么截取字符串,就是后面怎么放进变量里进行解释,还在头疼中。
追答
--写了个存储过程,你可以把它改成函数

set serverout on size 999999
DECLARE
i integer;
TYPE t_varr IS TABLE OF NUMBER(10) INDEX BY binary_integer;
t t_varr; --结果都放这数组里了
str varchar2(100);
str1 varchar2(100);
l_LEN integer;
BEGIN
str := '331,46,67,878'; --这是源串,例子
str1 := ','||str||',';
--计算出有几个“,”(数字)
l_len := length(Translate(str1, ',0123456789 ', ','));
FOR i IN 1..l_len-1 LOOP
--把数字都放数组里
SELECT substr(str1,instr(str1,',',1,i)+1 ,instr(str1,',',1,i+1)-instr(str1,',',1,i)-1 ) INTO t(i)
FROM dual;
--打印数组
dbms_output.put_line(t(i));
END loop;
end;
/
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
蓝色的鱼99
2013-05-30 · TA获得超过452个赞
知道小有建树答主
回答量:345
采纳率:0%
帮助的人:237万
展开全部
你还是查出值在php里面用explode 打断吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式