Oracle 表函数,该如何解决
Oracle 表函数
请教下Oracle 表函数的写法,
在baidu里搜索半天没找到。
表函数
想实现如下功能:
传递一个字符串:
假设传递‘aw298fdf',
函数返回表的内容(字符串拆分多列):
顺便说明些创建表 函数语法,非常感谢!
a
w
2
9
8
f
d
f
------解决方案--------------------
请教下Oracle 表函数的写法,
在baidu里搜索半天没找到。
表函数
想实现如下功能:
传递一个字符串:
假设传递‘aw298fdf',
函数返回表的内容(字符串拆分多列):
顺便说明些创建表 函数语法,非常感谢!
a
w
2
9
8
f
d
f
------解决方案--------------------
- SQL code
CREATE OR REPLACE TYPE "T_VC" is table of varchar2(100); / create or replace function f_test(i_str varchar2)return t_vc as v_str_table t_vc; begin v_str_table := t_vc(); for i in 1..length(i_str) loop v_str_table.extend; v_str_table(i):=substr(i_str,i,1); end loop; return v_str_table; end; / SQL> select * from table(f_test('aw298fdf')); COLUMN_VALUE -------------------------------------------- a w 2 9 8 f d f 8 rows selected
------解决方案--------------------
- SQL code
CREATE OR REPLACE TYPE "T_VC" is table of varchar2(100); --定义一个数组类型 / create or replace function f_test(i_str varchar2)return t_vc --定义返回数组类型的函数 as v_str_table t_vc; --定义一个数组类型变量 begin v_str_table := t_vc(); --初始构造,数组大小为0 for i in 1..length(i_str) loop --循环参数i_str里的每个字符 v_str_table.extend; --增加数组大小加1 v_str_table(i):=substr(i_str,i,1); --一个个字符截取,保存到数组里 end loop; return v_str_table; --返回数组 end; / SQL> select * from table(f_test('aw298fdf')); --用table函数展示数组结果 COLUMN_VALUE -------------------------------------------- a w 2 9 8 f d f 8 rows selected
------解决方案--------------------
很不容易,给点分吧
------解决方案--------------------
实测成功,但“表函数”是什么意思呢?不太理解。
- SQL code
CREATE OR REPLACE TYPE StringArray IS TABLE OF VARCHAR2(20);
------解决方案--------------------
------解决方案--------------------
SELECT substr(a, LEVEL, 1) t
FROM (SELECT '中国人' a FROM dual)
CONNECT BY level <= length(a)
T
-
中
国
人
我喜欢用这个拆分