oracle字符串怎么分,Oracle字符串比较

如何实现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按指定字符拆分字符串-split函数

create or replace type strArray as table of varchar2(4020)

--此方法只能使用英文半角逗号(,)

create or replace function f_split(instr IN VARCHAR2) return strArray

as

l_tablen BINARY_INTEGER;

l_tab    DBMS_UTILITY.uncl_array;

l_ret strArray:=strArray();

BEGIN

DBMS_UTILITY.comma_to_table(instr, l_tablen, l_tab);

FOR i IN 1 .. l_tablen LOOP

l_ret.EXTEND(1);

l_ret(i):=l_tab(i);

END LOOP;

return l_ret;

END;

select t.column_value as value from table(f_split('a,b,付')) t;

create or replace type strArray as table of varchar2(4020)

CREATE OR REPLACE FUNCTION f_split(p_str IN VARCHAR2, p_delimiter IN VARCHAR2)

  RETURN strArray IS

  TYPE ret_cur IS REF CURSOR;

  ret_cur1 ret_cur;

  g_str strarray:=strarray();

  l_sql varchar2(500):='';

BEGIN

  l_sql :='SELECT REGEXP_SUBSTR ('''||p_str||''',''[^'||p_delimiter||']+'',1,LEVEL) as valuesa

            FROM DUAL

            CONNECT BY REGEXP_SUBSTR ('''||p_str||''',''[^'||p_delimiter||']+'',1,LEVEL) IS NOT NULL';

OPEN ret_cur1 FOR l_sql ;

  FETCH ret_cur1 BULK COLLECT INTO g_str;

  CLOSE ret_cur1;

  RETURN g_str;

END f_split;

select * from table(f_split('abc$d$e$','$') );

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 怎么拆分字符串

拆分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中有字符串分割函数吗

第一种: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字符串怎么分,Oracle字符串比较
浏览地址:http://pwwzsj.com/article/hdiiej.html