首页 运维知识 关于Oracle SQL判断字符串是否在目标字符串中的函数

关于Oracle SQL判断字符串是否在目标字符串中的函数

根据需求,写了一段方法。 用于识别以下的情况: 判断 字符串A  在用逗号分隔的字符串B中是否存在 如: v_str_a = aa ; v_str_b= aa,bb,dd,cc ;…

根据需求,写了一段方法。
用于识别以下的情况:

判断 字符串A  在用逗号分隔的字符串B中是否存在

如:

v_str_a = aa ;

v_str_b= aa,bb,dd,cc ;

 

如上,就返回Y,否则返回N。

添加了一些校验。

 

以后可以根据需求,按照指定的分隔符,提取字符串。

毕竟Oracle的字符串解析比较麻烦,能封装就封装。

 1 create or replace function func_str_inArray(p_target    varchar2,
 2                                             p_str_array varchar2)
 3   return varchar2 is
 4 
 5   v_flag        varchar2(1);
 6   v_comma_loc   int;
 7   v_cut_string  varchar2(300);
 8   v_rest_string varchar2(2000);
 9 begin
10   ------------------------
11   --p_target 不能包含","!!!注意!!
12   --info:这个函数用于识别目标字符串,是否在一串用“,”分开的字符串内
13   ------------------------
14   v_flag      := 'N';
15   v_comma_loc := instr(p_str_array, ',');
16 
17   --如果是对比字符串是空,则返回false
18   if nvl(p_str_array, '') = '' then
19     return 'N';
20   end if;
21   --如果没有逗号,直接比较
22   if length(p_str_array) > 0 and v_comma_loc = 0 then
23     if p_target = p_str_array then
24       return 'Y';
25     else
26       return 'N';
27     end if;
28   end if;
29 
30   v_rest_string := p_str_array;
31 
32   while v_comma_loc > 0 loop
33     v_cut_string  := substr(v_rest_string, 0, v_comma_loc - 1);
34     v_rest_string := substr(v_rest_string,
35                             v_comma_loc + 1,
36                             length(v_rest_string) - 1);
37   
38     if p_target = v_cut_string then
39       v_flag := 'Y';
40     end if;
41   
42     v_comma_loc := instr(v_rest_string, ',');
43   
44     if v_comma_loc = 0 and length(v_rest_string) > 0 then
45       if p_target = v_rest_string then
46         v_flag := 'Y';
47       end if;
48     end if;
49   
50   end loop;
51 
52   return v_flag;
53 
54 end;
免责声明:文章内容不代表本站立场,本站不对其内容的真实性、完整性、准确性给予任何担保、暗示和承诺,仅供读者参考,文章版权归原作者所有。如本文内容影响到您的合法权益(内容、图片等),请及时联系本站,我们会及时删除处理。

作者: 小小编

为您推荐

dell R710 更换raid卡后,raid卡信息没有了,处理方案

dell R710 更换raid卡后,raid卡信息没有了,处理方案

1.将一台服务器(A)的硬盘依次拔出,按相同顺序插入另一台同样配置的服务器(B) 2.启动服务器(B) 3.按提示键盘按...
PL SQL Developer 13连接Oracle数据库并导出数据详细操作教程方法

PL SQL Developer 13连接Oracle数据库并导出数据详细操作教程方法

下载 并安装 PL SQL Developer 13,默认支持中文语言 ========================...
关于一条sql语句在mysql中是如何执行的

关于一条sql语句在mysql中是如何执行的

最近开始在学习mysql相关知识,自己根据学到的知识点,根据自己的理解整理分享出来,本篇文章会分析下一个sql语句在my...
关于sql注入姿势总结(mysql)

关于sql注入姿势总结(mysql)

前言 学习了sql注入很长时间,但是仍然没有系统的了解过,这次总结一波,用作学习的资料。 从注入方法分:基于报错、基于布...
关于Oracle SQL外连接

关于Oracle SQL外连接

SQL提供了多种类型的连接方式,它们之间的区别在于:从相互交叠的不同数据集合中选择用于连接的行时所采用的方法不同。 连接...

发表回复

返回顶部