Oracle解析逗号分隔的字符串,或者01110110101此类数据

Oracle解析逗号分隔的字符串,或者01110110101此类数据– 1.提取此类数据中的1的索引位置,从1开始 例: 0001100001100 –> 4,5,10,11 create or replace function hazq_instr_con

— 1.提取此类数据中的1的索引位置,从1开始    例: 0001100001100 –> 4,5,10,11

create or replace function hazq_instr_contains
(
v_str in varchar2
)
return varchar2
is
v_count number(10):=0;
v_char varchar2(50):=null;
strTmp varchar2(4000):=null;
v_tm varchar2(50):=null;

begin
v_count:=length(v_str);
for i in 1..v_count loop
v_char:=substr(v_str,i,1);
if (v_char = “1”) then
strTmp:=strTmp || to_char(i) || “,”;
end if;
if (i = v_count) then
v_tm:= length(strTmp);
strTmp:=substr(strTmp,1,v_tm-1);
end if;
end loop;
return (strTmp);
end hazq_instr_contains;

— 2.获取指定分隔符位置的字符串

— 将 3,5,11,88数据转换成行数据   字符串分割函数,oracle拆分字符串

create or replace function hazq_rjy_StrArrayOfIndex
(
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 hazq_rjy_StrArrayOfIndex;

— select hs_user.get_strarraystrofindex(“jjfddj,33f,,ff2,i444kd”,”,”,3) from dual; — 这里3 是获取第4个字符串
— 如果获取不存在的字符串,如11 返回空
— 两个分割符连着,也是返回空

— 3.将处理好的数据插入表中(写个游标循环,将数据插入到表中)
create or replace procedure hazq_get_roles is
v_user_id number(10);
v_branch_no number(10);
v_role_ids varchar2(1024);
v_count number(10) := 0;
cursor role_cur is select t.user_id,t.branch_no,t.role_name from hazq_rjy_tmp t;

begin
open role_cur;
loop
fetch role_cur into v_user_id,v_branch_no,v_role_ids;
if role_cur%NOTFOUND then
EXIT;
else
select length(regexp_replace(replace(v_role_ids,”,”,”|”),”[^|]+”,””)) into v_count from dual;
— 这种正则写法是 查询某个字符在字符串中出现的次数,可以使用上面的Get_StrArrayLength函数代替
for i in 0..v_count loop
insert into hazq_rjy_tmp2(user_id,branch_no,role_id) values(v_user_id,v_branch_no,to_number(hazq_rjy_StrArrayOfIndex(v_role_ids,”,”,i)));
end loop;
commit;
end if;
end loop;
close role_cur;
end hazq_get_roles;

附:(这个ap  可以获取分隔符分隔的字符串的个数)

create or replace function hazq_rjy_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 hazq_rjy_StrArrayLength;

— select hs_user.get_strarraylength(“jjfddj,33f,,ff2,i444kd”,”,”) from dual; — 5 获取到,分割的字符串个数。
— 没有, 则返回1

 

码字不易,转发请标明出处^_^     https://www.cnblogs.com/junyouren/p/11936517.html

下面是sql学习交流群,欢迎有兴趣的朋友加入交流学习!!

合肥SQL交流群:703978998 

Oracle解析逗号分隔的字符串,或者01110110101此类数据

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/10752.html

(0)
上一篇 2022-12-22
下一篇 2022-12-22

相关推荐

  • Python Linux模块参数展示

    Python Linux模块参数展示Linux模块参数是Linux内核模块的一部分,这些参数可以控制模块行为。在Python中,可以使用C语言的函数读取和设置Linux模块的参数。模块参数分为只读参数(RO)和可读写参数(RW)。

    2023-12-24
    78
  • Postgesql 空间点聚合查询实验

    Postgesql 空间点聚合查询实验聚合效果:根据范围四至获取区域内的聚合点数据。 aggregate_build_data /***创建测试空间点数据库***/ create table tpoint( gid serial pri…

    2023-01-27
    111
  • 电商商品搜索 es_正规电商平台有哪些

    电商商品搜索 es_正规电商平台有哪些电商数据系统主要类型 一个中等的电商平台,每天都要产生百万条原始数据,上亿条用户行为数据。一般来说,电商数据一般有3种主要类型的数据系统: 关系型数据库 ,大多数互联网公司会选用mysql作为关数据…

    2023-01-26
    104
  • excel常用函数之截取指定字符

    excel常用函数之截取指定字符本文主要说的是Excel常用的三种截取函数:LEFT、RIGHT、MID。1、LEFT函数(1)定义:从一个文本字符串的第一个字符开始返回指定个数的字符。(2)语法:LEFT(text,[num_chars])text必需。包含要提取的字符的文本字符串。num_chars可选。指定要由LEFT提取的字符的数量。num_chars必须是大于等于0的整数。如果num_chars大于文本长度,则LEFT返回全部文本。如果省略num_chars,则假定其……

    2023-03-02
    113
  • Python Tkinter Spinbox – 创建带步进按钮的可选数字项

    Python Tkinter Spinbox – 创建带步进按钮的可选数字项Tkinter是Python的标准GUI库,可以轻松创建窗口、按钮、文本框、菜单等各种组件,提供用户与程序交互的界面。使用Tkinter开发GUI应用程序比较简单,只需要导入Tkinter模块,创建一个顶层窗口,然后在窗口对象上添加各种组件即可。

    2024-02-08
    55
  • MySQL常用函数_powerquery函数

    MySQL常用函数_powerquery函数路漫漫其修远兮,吾将上下而求索,又到了周末,我继续带各位看官学习回顾Mysql知识。 上次说到了流程控制函数,那就从流程控制函数来继续学习吧! #五.流程控制函数 #1.if函数:if else的效果

    2023-03-23
    106
  • Python如何运行代码

    Python如何运行代码Python 是一种互动式、面向对象的解释型高级程序设计语言。Python 语言具有易于上手、易于阅读、代码简洁明了等特点。Python 运行代码的方式也有很多种,本文将从多个角度细致地阐述 Python 如何运行代码。

    2024-04-19
    27
  • mysql查询性能优化_sql性能优化

    mysql查询性能优化_sql性能优化1、不要取出全部列,取出全部列,会让优化器无法完成索引覆盖扫描这类优化,还会为服务器带来额外的I/O、内存和CPU的消耗。应该严格禁止SELECT * 的写法。MySQL使用如下三种方式应用WHERE

    2023-01-22
    110

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注