zoukankan      html  css  js  c++  java
  • Oracle SQL判断字符串是否在目标字符串中的函数

    转自: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;
  • 相关阅读:
    VMware 克隆一个虚拟机(win7)
    HDU 5695 Gym Class (拓扑排序、贪心、优先队列)
    HDU2647 Reward (拓扑排序、反向建图)
    HDU 3342 Legal or Not (拓扑排序、有向图是否存在环)
    Vue框架简介及简单使用
    Linux文件常用指令
    Linux系统相关命令
    Linux关机指令详解
    linux目录结构
    Linux用户相关命令
  • 原文地址:https://www.cnblogs.com/lpxblog/p/8323908.html
Copyright © 2011-2022 走看看