create or replace function DRAG_GET_VINDICATE_ID(V_VINDICATE_CODE in varchar2)
return varchar2 is
Result varchar2(200);
v_team_code varchar2(200);
v_temp_code varchar2(200);
v_department_id varchar2(200);
v_count number;
begin
Result := '';
v_count := 0;
v_team_code := V_VINDICATE_CODE;
select INSTR(v_team_code, ';', 1, 1) into v_count from dual;
--如果不包含分号
if v_count = 0 then
select p.department_id
into Result
from pub_department p
where p.code = v_team_code;
--如果包含分号
else
while v_team_code is not null loop
--判断是否有分号
select INSTR(v_team_code, ';', 1, 1) into v_count from dual;
if v_count = 0 then
--如果没有,赋值为空 下次循环跳出
v_temp_code := v_team_code;
v_team_code := '';
else
--如果有,截取第一个分号
select substr(v_team_code, 0, INSTR(v_team_code, ';', 1, 1) - 1)
into v_temp_code
from dual;
end if;
--根据CODE找ID
select p.department_id
into v_department_id
from pub_department p
where p.code = v_temp_code;
Result := Result || v_department_id || ';';
--截取分号后的字符串
select substr(v_team_code,
INSTR(v_team_code, ';', 1, 1) + 1,
length(v_team_code))
into v_team_code
from dual;
--去掉最后一个分号
if v_team_code is null then
Result := substr(Result, 0, length(Result) - 1);
end if;
end loop;
end if;
return(Result);
end DRAG_GET_VINDICATE_ID;
下面这个就很简洁
select pub_department.department_id
from pub_department
where instr(';' || 'CAS4592;CAS4601' || ';',
';' || pub_department.code || ';') > 0;
分享到:
相关推荐
这里利用了函数 regexp_substr和connect by 及oracle的正则相关函数实现oracle分割字符串方法
Oracle 分割字符串 返回多行数据
Oracle拆分字符串,字符串分割的函数,将返回一个表格,如果有需要的可以下载去看看。
Oracle_Sql_中常用字符串处理函数
传入一个字符串和该字符串的分割字符,返回去重后的字符串,可以直接在plsql中运行,简单的函数运用,能处理oracle中。资源仅供参考
string :需要进行正则处理的字符串 pattern :进行匹配的正则表达式 position :起始位置,从第几个字符开始正则表达式匹配(默认为1) occurrence :标识第几个匹配组,默认为1 modifier :模式(‘i’不区分大...
数据库给定字符串,对相应的字符串进行分割。比如 ',a,b,c,d,e,'则分割出来的结果为a b c d e。
实现oracle中 分割字符串的功能,返回一个表。 比如:abc;cde;dfd;133 select * from table(split('abc;cde;dfd;133')) 可以返回 abc cde dfd 133
oracle 自定义函数 解析文件以“|”分割字符串
oracle中没有方便分割字符串的的函数,仿照c#中的split方法和网友的方法,并进行了改进,(1)先自定义个类型str_split,(2)分割函数splitstr,返回table;(3)取第n个数组的get_splitstr,用户1,2,3部建好,使用时只需要...
aaa,bbb,ccc n=2时 截取结果 bbb 很明白了吧 哈
将字符串分割成数组: 例如将字符串“7369,7499,7521,7844"分割成 7369 7499 7521 7844 用法:可以将分割结果做为一个数组或者数据库表列来使用 select * from scott.emp where empno in (select column_value from...
主要介绍了Oracle 两个逗号分割的字符串,获取交集、差集的sql实现过程解析,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
本文档详细介绍了如何在Oracle数据库中实现像C#等其它编程语言中Split函数来拆分字符的功能。例子简单易懂,并附有详细的实现过程。
oracle 某列存儲的值是有逗號的字符串,希望通過逗號分隔開來顯示多行。sql,有預期結果,有項目實戰。
不做详解,直接上图。 SELECT T.NAME, T.TESTSTR FROM TEST2 T; SELECT DISTINCT T.NAME, REPLACE(REGEXP_SUBSTR(T.TESTSTR, '[^,]+', 1, LEVEL), ',', ' ') TESTSTR FROM TEST2 T WHERE 1 = 1 ...
实现ORACLE字符串按分隔符切割并转换成多行数据,参考附件中样例即可轻松实现
oracle存储过程中入参是逗号分隔,并且参数要使用在in过滤语句中查询数据。处理的方法与实现