正文
oracle符串怎么分割的简单介绍
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
oracle存储过程传入一个字符串参数'1,2,3,4,5,6,7,8',如何分割并转为数字?
create or replace type type_split as table of varchar2(50); --创建一个type,如果为了使split函数具有通用性,请将其size 设大些。\x0d\x0a\x0d\x0a--创建function\x0d\x0acreate or replace function split\x0d\x0a(\x0d\x0a p_list varchar2,\x0d\x0a p_sep varchar2 := ','\x0d\x0a) return type_split pipelined\x0d\x0a is\x0d\x0a l_idx pls_integer;\x0d\x0a v_list varchar2(50) := p_list;\x0d\x0abegin\x0d\x0a loop\x0d\x0a l_idx := instr(v_list,p_sep);\x0d\x0a if l_idx 0 then\x0d\x0a pipe row(substr(v_list,1,l_idx-1));\x0d\x0a v_list := substr(v_list,l_idx+length(p_sep));\x0d\x0a else\x0d\x0a pipe row(v_list);\x0d\x0a exit;\x0d\x0a end if;\x0d\x0a end loop;\x0d\x0a return;\x0d\x0aend split;\x0d\x0a\x0d\x0a使用:\x0d\x0a select * from table(split('1,2,3,4,5,6,7,8'\x0d\x0a,','));\x0d\x0a然后就可以通过“,”来分割数字了
Oracle中有字符串分割函数吗
第一种:oracle字符串分割和提取
分割
create or replace function Get_StrArrayLength
(
av_str varchar2, --要分割的字符串
av_split varchar2 --分隔符号
)
return number
is
lv_str varchar2(1000);
lv_length number;
begin
lv_str:=ltrim(rtrim(av_str));
lv_length:=0;
while instr(lv_str,av_split)0 loop
lv_length:=lv_length+1;
lv_str:=substr(lv_str,instr(lv_str,av_split)+length(av_split),length(lv_str));
end loop;
lv_length:=lv_length+1;
return lv_length;
end Get_StrArrayLength;
提取
create or replace function Get_StrArrayStrOfIndex
(
av_str varchar2, --要分割的字符串
av_split varchar2, --分隔符号
av_index number --取第几个元素
)
return varchar2
is
lv_str varchar2(1024);
lv_strOfIndex varchar2(1024);
lv_length number;
begin
lv_str:=ltrim(rtrim(av_str));
lv_str:=concat(lv_str,av_split);
lv_length:=av_index;
if lv_length=0 then
lv_strOfIndex:=substr(lv_str,1,instr(lv_str,av_split)-length(av_split));
else
lv_length:=av_index+1;
lv_strOfIndex:=substr(lv_str,instr(lv_str,av_split,1,av_index)+length(av_split),instr(lv_str,av_split,1,lv_length)-instr(lv_str,av_split,1,av_index)-length(av_split));
end if;
return lv_strOfIndex;
end Get_StrArrayStrOfIndex;
如何实现Oracle中字符串分隔
在OracleE数据库的应用中,经常遇到要对一个长的字符串按指定的分割符进行分割的情况,这种分割的方法很多,在此介绍一个实际应用中觉得比较实用的方法。根据面向对象的编程思想,把这个功能封装在一个包中实现,包头的实现如下:create or replace package pkg_split_str is--Purpose:按分隔符遍历字符串type t_strs is table of varchar2(255)index by binary_integer;v_split_strs t_strs;--对字符串按指定分割符时行分割的主要过程procedure split_str(i_str in varchar2,i_delimiter in varchar2);--总共有多少个子串function getEleCount return integer;--取出指定位置的子串function getElement(i_idx in integer)return varchar2;--测试程序procedure mytest(i_str in varchar......
oracle 如何拆分字符串
创建与A相同结构的表A_temp
create or replace procedure busi_bm is
lstr varchar2(1000);
ln number;
mid a_test.id%type;
m_bm a_test.bm%type;
begin
for rec_dia in (select *
from a_test t) loop
if rec_dia.bm = replace(rec_dia.bm, ',') then
--只有一个值
insert into a_test_temp values(rec_dia.id,rec_dia.bm);
commit;
else
lstr := rec_dia.bm || ',';
loop
ln := instr(lstr, ',');--第一个逗号的索引 a,b,c
exit when(nvl(ln, 0) = 0);--没有逗号了,退出
m_bm := ltrim(rtrim(substr(lstr, 1, ln - 1)));--获得a
lstr := substr(lstr, ln + 1);--b,c
insert into a_test_temp values(rec_dia.id,m_bm);
commit;
end loop;
end if;
end loop;
end busi_bm;
执行上面的存储过程,写入到A_TEMP表。记得到了你要的结果。
记得采纳!
ORACLE 怎么拆分字符串
拆分sql后:
select
substr('Hello World',0,instr('Hello World','o')) as 首,
substr('Hello World',instr('Hello World','o')+1) as 尾
from dual;
有什么规定吗?
“ABCDEFGH”或是“A,B,C,D,E,F,G,H"
按符号拆分?按位置拆分?
substr()函数:截取a-b之间的或a 。如:substr('Hello World',0,5)截取1-5或
substr('Hello World',0,instr('Hello World','o'))截取1-"o"的位置
1.如果是","等符号:
select substr('Hello World',0,instr('Hello World','o')) from dual;
select substr('Hello World',instr('Hello World','o')+1) from dual;
或
select substr('Hello World',instr('Hello World','o')+1,length('Hello World')) from dual;
oracle里面怎么分割字符串
(1)定义split_type类型:
CREATE OR REPLACE TYPE split_type IS TABLE OF VARCHAR2 (4000) /
(2)定义split函数:
CREATE OR REPLACE FUNCTION split (p_str IN VARCHAR2, p_delimiter IN VARCHAR2) RETURN split_type IS j INT := 0; i INT := 1; len INT := 0; len1 INT := 0; str VARCHAR2 (4000); my_split split_type := split_type (); BEGIN len := LENGTH (p_str); len1 := LENGTH (p_delimiter); WHILE j len LOOP j := INSTR (p_str, p_delimiter, i); IF j = 0 THEN j := len; str := SUBSTR (p_str, i); my_split.EXTEND; my_split (my_split.COUNT) := str; IF i = len THEN EXIT; END IF; ELSE str := SUBSTR (p_str, i, j - i); i := j + len1; my_split.EXTEND; my_split (my_split.COUNT) := str; END IF; END LOOP; RETURN my_split; END split; /
(3)存储过程中,使用类似
For T In ( select a,b,c,d from table (split('1,2,3,4',',')) ) Loop
--注意下面的inserti语句,varchar类型的值需要补充引号上去
Execute Immediate ' insert into tableName set fieldName = '||T.a ;
Execute Immediate 'commit';
End Loop;
的查询语句,把分开的结果拼成sql语句并写入到表中。
oracle符串怎么分割的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于、oracle符串怎么分割的信息别忘了在本站进行查找喔。