暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

字符串转表

原创 蛋蛋。 2021-06-23
862

创建自定义类型:
CREATE OR REPLACE TYPE “T_STRLIST” as Table of Varchar2(4000)

建转换方法:
CREATE OR REPLACE Function fun_Str2list
(
Str_In In Varchar2,
Split_In In Varchar2 := ‘,’
) Return t_Strlist
Pipelined As
v_Str Long;
P Number;
–功能:将由逗号分隔的不带引号的字符序列转换为单列数据表
–参数:STR_IN,如:G0000123,G0000124,G0000125…,SPLIT_IN,分隔符,缺省为,号
–说明:
–1.当SQL语句中涉及“IN(常量1, 常量2,…) ”子句时使用这种方式以便利用绑定变量。
–2.使用这两个函数时,需要在SQL语句中加入“/+ cardinality(b 3)/”提示,因为CBO下临时内存表没有统计数据,。
–3.两种调用示例
–SELECT /+ cardinality(b 3)/ * FROM 门诊费用记录 WHERE NO IN (SELECT * FROM TABLE(F_STR2LIST(‘A01,A02,A03’)) B);
–SELECT /+ cardinality(b 3)/ A.* FROM 门诊费用记录 A, TABLE(F_STR2LIST(‘A01,A02,A03’)) B WHERE A.NO = B.COLUMN_VALUE;
Begin
If Str_In Is Null Then
Return;
End If;
v_Str := Str_In || Split_In;
Loop
P := Instr(v_Str, Split_In);
Exit When(Nvl(P, 0) = 0);
Pipe Row(Substr(v_Str, 1, P - 1));
v_Str := Substr(v_Str, P + 1);
End Loop;
Return;
End;

使用:
Select Column_Value As 值 From Table (Select fun_Str2list(‘111|222|333’, ‘|’) From Dual)

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论