转自:http://dacoolbaby.iteye.com/blog/1772156

根据需求,写了一段方法。

用于识别以下的情况:

判断 字符串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;

Oracle SQL判断字符串是否在目标字符串中的函数的更多相关文章

  1. Oracle sql判断一个字段是否全数字 或含有中文

    update (select length(t.name), t.* -- name,length(name) from g_enterprise_info t where nvl2(translat ...

  2. Oracle SQL 判断某表是否存在

    SQL> SELECT COUNT (*) as cnt FROM ALL_TABLES WHERE table_name = UPPER('your_table'); CNT -------- ...

  3. 获取目标字符串在字符串中第N次出现的位置

    /** * 获取目标字符串在字符串中第N次出现的位置 * @file name * @author xiehongwei * @date 2017-8-2 下午3:29:09 * @param sou ...

  4. Oracle sql连接

    inner-join                    left-outer-join                 right-outer-join                 full- ...

  5. Oracle sql 子字符串长度判断

    Oracle sql 子字符串长度判断 select t.* from d_table t ,) ,instr(t.col,; 字符串的前两位都是数字: select * from d_table t ...

  6. SQL判断字符串里不包含字母

    Oracle: 方法一:通过To_Number 函数异常来判断,因为这个函数在转换不成功的时候是报错,所以只能用存储过程包装起来. CREATE OR REPLACE FUNCTION Is_Numb ...

  7. sql判断以逗号分隔的字符串中是否包含某个字符串--------MYSQL中利用select查询某字段中包含以逗号分隔的字符串的记录方法

    sql判断以逗号分隔的字符串中是否包含某个字符串---------------https://blog.csdn.net/wttykj/article/details/78520933 MYSQL中利 ...

  8. SQL Server获取下一个编码字符串的实现方案分割和进位

        我在前一种解决方案SQL Server获取下一个编码字符实现和后一种解决方案SQL Server获取下一个编码字符实现继续重构与增强两篇博文中均提供了一种解决编码的方案,考虑良久对比以上两种方 ...

  9. oracle中一个字符串包含另一个字符串中的所有字符

    oracle中一个字符串包含另一个字符串中的所有字符 --解决监理报告中所勾选的标段信息,与该用户所管理的标段字符串不匹配的问题. select * from a where instr(a,b)&g ...

随机推荐

  1. Win8 安装.Net Framework3.5(2.0,3.0)组件二种方式

    第一种: 通过命令+win8映像文件 找到系统盘cmd文件:C:\WINDOWS\system32\Cmd.exe 右键“以管理员身份运行”,然后弹出一个黑框框. 黑框框里面输入一下命令: dism. ...

  2. 我的MyGeneration

    话不多说,直接上代码 Interface Code: public class GeneratedGui : DotNetScriptGui { public GeneratedGui(ZeusCon ...

  3. Java-API:java.math.BigDecimal

    ylbtech-Java-API:java.math.BigDecimal 1.返回顶部   2.返回顶部   3.返回顶部   4.返回顶部   5.返回顶部 1. https://docs.ora ...

  4. oracle——基础知识(二)未完

    1.select 查询 单独的一条 select 语句 可以一次查询多条记录:但是在 pl/sql 块中,select语句只能 使用INTO子句:必须并且只能返回一行 2.EXECUTE IMMEDI ...

  5. python request (1) 环境

    环境准备 requests   httpbin  virtualenv  pip  python 安装 #mkdir /home/requests #yum install -y python-pip ...

  6. TCP/IP 笔记 1.3 IP:网际协议

    ---恢复内容开始--- I P是T C P / I P协议族中最为核心的协议.所有的 T C P.U D P.I C M P及I G M P数据都以I P数据报格式传输. 不可靠( u n r e ...

  7. sqlplus--spool基础运用

    set heading offset feedback offset echo offset newp noneset termout offspool /home/orarun/scripts/da ...

  8. Struts2框架01【如果使用struts框架】【利用struts框架写一个 hello world】

    1 什么是Struts2框架 基于MVC设计模式的web应用框架 Struts2框架是一个轻量级的MVC流程框架 轻量级是指程序的代码不是很多,运行时占用的资源不是很多,MVC流程框架就是说它是支持分 ...

  9. ubuntu16安装pylearn2 出现错误提示importerror:no module named six.moves

    由于市面上的一些教程时间比较早,入门学习时跟随教程安装容易出现各种错误,这些错误基本都是版本不同导致的 所以,我们安装过程中一定要指出包的版本,如果你已经遇到no module named six.m ...

  10. 使用jar打war包或解压war包

    进入Dos命令行,并到目标文件夹,如C:\Temp,待打包的内容在C:\Temp\Blog里,目标,把Blog里的相应文件打成war报 1.打包 C:\Temp\jar -cvf Blog.war . ...