Oracle中怎样将字段字符串以逗号为界截取,并将得到的子串通过函数解释后再拼接成一个字段 10
字符串中的逗号数量不定,如字段aa的字符为“001,002,003“,需解释为”a,b,c“,请各位大侠写的详细点...小弟是新手...
字符串中的逗号数量不定,如字段aa的字符为“001,002,003“,需解释为”a,b,c“,请各位大侠写的详细点...小弟是新手
展开
3个回答
展开全部
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
展开全部
我猜测你是想把字段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;
/
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你还是查出值在php里面用explode 打断吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询