oracle怎么拆分字,oracle 拆分行

Oracle数据库字段拆分

SELECT REGEXP_SUBSTR(t.PATH_IDS||',', '[^,]+', 1, 1),

网站的建设创新互联公司专注网站定制,经验丰富,不做模板,主营网站定制开发.小程序定制开发,H5页面制作!给你焕然一新的设计体验!已为石雕等企业提供专业服务。

REGEXP_SUBSTR(t.PATH_IDS||',', '[^,]+', 1, 2),

REGEXP_SUBSTR(t.PATH_IDS||',', '[^,]+', 1, 3),

DECODE(REGEXP_SUBSTR(t.PATH_IDS||',', '[^,]+', 1, 5), NULL, NULL, REGEXP_SUBSTR(t.PATH_IDS||',', '[^,]+', 1, 4)),

DECODE(REGEXP_SUBSTR(t.PATH_IDS||',', '[^,]+', 1, 5), NULL, REGEXP_SUBSTR(t.PATH_IDS||',', '[^,]+', 1, 4), REGEXP_SUBSTR(t.PATH_IDS||',', '[^,]+', 1, 5))

FROM 机构层级关系表 t

前三列根据正则匹配,获取对应的分割后的值,没有啥讲的,

第四列要判断是否存在第五列,如果不存在,则第四列要空,存在则用第四列的值

第五列要判断是否存在第五列,如果不存在,则给第四列的值,存在则用第五列的值

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、首先需要sys或system权限操作

2、查询需要更改表的ID

select object_id  from all_objects where owner = 'ITHOME'

and object_name = 'TEST';1234

注:ITHOME为用户,TEST是要更改的表,表名要大写

3、通过ID查出该表所有字段的顺序

select obj#, col#, name

from sys.col$

where obj# = '103756' order by col#123

4、修改顺序

update sys.col$ set col#=2 where obj#=103756 and name='AGE';update sys.col$ set col#=3 where obj#=103756 and name='NAME';12

或直接在第三步的语句后面加 for update 进行修改

最后commit提交 并且重启Oracle服务

oracle根据某个字符拆分字符串

/*

*根据某个字符拆分字符串

*/

CREATE OR REPLACE TYPE str_split IS TABLE OF VARCHAR2 (4000);

CREATE OR REPLACE FUNCTION splitstr(p_string IN VARCHAR2, p_delimiter IN VARCHAR2)

RETURN str_split

PIPELINED

AS

v_length NUMBER := LENGTH(p_string);

v_start NUMBER := 1;

v_index NUMBER;

BEGIN

WHILE(v_start = v_length)

LOOP

v_index := INSTR(p_string, p_delimiter, v_start);

/ 示范 /

SELECT * from table(splitstr('Hello,Cnblogs!',','));

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 拆分行
浏览路径:http://ybzwz.com/article/hsjges.html