oracle中split字符串的问题

请问使用什么办法实现split的功能?谢谢例如原先的字符串是“张三,李四,王五”然后拆成一个集合(“张三”,“李四”,“王五”)然后我可以在where子句中使用in。谢谢... 请问使用什么办法实现split的功能?
谢谢
例如原先的字符串是“张三,李四,王五”
然后拆成一个集合(“张三”,“李四”,“王五”)
然后我可以在where子句中使用in。
谢谢。
展开
 我来答
流浪云风
推荐于2016-02-05 · TA获得超过4315个赞
知道大有可为答主
回答量:1119
采纳率:69%
帮助的人:920万
展开全部
写function或procedure来分隔。
首先声明一个数组类型:
-- 字符串集合
TYPE Typ_Tab_Str IS TABLE OF VARCHAR(150) INDEX BY BINARY_INTEGER;
-- 写一个函数
CREATE OR REPLACE FUNCTION Fun_Stringtoarrary(P_Sourcestr IN VARCHAR2, -- 源字符串
P_Separator IN VARCHAR2, -- 分隔符
P_Arrary OUT Typ_Tab_Str -- 拆分后得到的数组
) RETURN NUMBER IS
n_Count NUMBER(6); -- 分隔符的个数
n_Posb NUMBER(6); -- 初始位置
n_Pose NUMBER(6); -- 分隔符的位置
BEGIN
-- 初始化
n_Count := 0;
n_Posb := 1;
-- 非空校验
IF Prm_Sourcestr IS NULL OR Prm_Separator IS NULL THEN
RETURN - 1;
END IF;
LOOP n_Pose := Instr(Prm_Sourcestr, Prm_Separator, n_Posb, 1);
n_Count := n_Count + 1;
IF n_Pose = 0 THEN
Prm_Arrary(n_Count) := Substr(Prm_Sourcestr, n_Posb, Length(Prm_Sourcestr) - n_Posb + 1);
EXIT;
END IF;
Prm_Arrary(n_Count) := Rtrim(Ltrim(Substr(Prm_Sourcestr, n_Posb, n_Pose - n_Posb))); n_Posb := n_Pose + Length(Prm_Separator);
END LOOP;
RETURN n_Count;
EXCEPTION
WHEN OTHERS THEN
RETURN - 1;
END Fun_Stringtoarrary;
追问
oracle没有内置的函数吗
追答
没有,只提供了,inner,substr等等简单操作的函数,因为oracle本身就没有数组类型,我们是通过索引表来模拟数组,其实就是一个仿数组的结构。上面的函数完全正确,属于常用自定义功能函数。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
树_镜
2012-10-31 · TA获得超过546个赞
知道小有建树答主
回答量:370
采纳率:100%
帮助的人:234万
展开全部
你是想把一个字符串分成多个么?比如abc拆成a,b,c?
如果是这样的话可以用substr(),例如:
substr(abc,1,1)=a,substr(abc,1,2)=ab,substr(abc,2,2)=bc。
追问
例如原先的字符串是“张三,李四,王五”
然后拆成一个集合(“张三”,“李四”,“王五”)
然后我可以在where子句中使用in。
谢谢。
追答
一样的substr就是提取部分字符段的函数,可以用到你的集合里。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dngoryaner
2012-10-31 · TA获得超过2350个赞
知道小有建树答主
回答量:2404
采纳率:0%
帮助的人:1120万
展开全部
SELECT '('||''''||REPLACE('张三,李四,王五',',',''',''')||''''||')' FROM DUAL;
你可以在JAVA理处理:
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式