数据库(oracle)sql问题 5C

有这样的数据 被逗号分隔 怎么让他变为三条数据 oracle数据库

7个回答

使用正则表达式:
select regexp_substr('是,否,未检查', '[^,]+', 1, level)
from dual
connect by level <= length('是,否,未检查') -
length(REPLACE('是,否,未检查', ',', '')) + 1;

图片说明

chenchen_csdn
chenchen_csdn 该怎么取就怎么取,取出来之后split截取逗号,new数组,负值,循环打印
2 年多之前 回复

使用split()分隔函数

取数据照常取,取完之后根据逗号截取字符串,循环出来

用pl/sql写声明遍历循环插入,删除

第一种方式:
with t as

(select 'i;am;a;test;hahahhah' as str from dual)

select level,

str,

regexp_substr(t.str, '[^;]+', 1, level) str_single

from t

connect by level <= length(t.str) - length(replace(t.str, ';', '')) + 1;

第二种方式:可以自己创建一张表测试
DECLARE _
TYPE t_table IS TABLE OF VARCHAR2(30) INDEX BY BINARY_INTEGER;
v_table t_table;
v_cnt NUMBER; _
BEGIN
for nm in (select name from t_cs1) loop
v_cnt := length(nm.name)-length(replace(nm.name,';',''))+1;
FOR a IN 1 .. v_cnt LOOP _
dbms_output.put_line(regexp_substr(nm.name,'[^;]+',1,a));
END LOOP;
end loop;
_END;
__

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问