`
lingfeng179
  • 浏览: 26823 次
  • 性别: Icon_minigender_1
  • 来自: 浙江
社区版块
存档分类
最新评论

oracle 使用 find_in_set 函数

 
阅读更多
CREATE OR REPLACE
FUNCTION FIND_IN_SET(piv_str1 varchar2, piv_str2 varchar2, p_sep varchar2 := ',')  
RETURN NUMBER IS    
  l_idx    number:=0; -- 用于计算piv_str2中分隔符的位置
  str      varchar2(500);  -- 根据分隔符截取的子字符串
  piv_str  varchar2(500) := piv_str2; -- 将piv_str2赋值给piv_str
  res      number:=0; -- 返回结果
BEGIN
-- 如果piv_str中没有分割符,直接判断piv_str1和piv_str是否相等,相等 res=1
IF instr(piv_str, p_sep, 1) = 0 THEN
   IF piv_str = piv_str1 THEN 
      res:= 1;
   END IF;
ELSE
-- 循环按分隔符截取piv_str
LOOP
    l_idx := instr(piv_str,p_sep);
-- 当piv_str中还有分隔符时
      IF l_idx > 0 THEN
   -- 截取第一个分隔符前的字段str
         str:= substr(piv_str,1,l_idx-1);
   -- 判断 str 和piv_str1 是否相等,相等 res=1 并结束循环判断
         IF str = piv_str1 THEN 
           res:= 1;
           EXIT;
         END IF;
        piv_str := substr(piv_str,l_idx+length(p_sep));
      ELSE
   -- 当截取后的piv_str 中不存在分割符时,判断piv_str和piv_str1是否相等,相等 res=1
        IF piv_str = piv_str1 THEN 
           res:= 1;
        END IF;
        -- 无论最后是否相等,都跳出循环
        EXIT;
      END IF;
END LOOP;
-- 结束循环
END IF;
-- 返回res
RETURN res;
END FIND_IN_SET;

 

分享到:
评论

相关推荐

    oracle语法及函数大全[参考].pdf

    Oracle 语法及函数大全是 Oracle 数据库管理系统中使用的语法和函数的集合。了解这些语法和函数是使用 Oracle 数据库的关键。 数据操作 * SELECT 语句:从数据库表中检索数据行和列。 * INSERT 语句:向数据库表...

    在Oracle 9i中Form Builder使用树心得

    在搜索和操作树节点时,`FIND_TREE_NODE`函数帮助找到匹配特定条件的节点,而`ADD_TREE_NODE`则用于动态添加新的树节点,通过`OFFSET_TYPE`和`OFFSET`参数控制新节点的位置,如作为父节点的子节点或同级节点。...

    oracle内容替换SQL

    根据提供的文件信息,本文将详细解析“Oracle内容替换SQL”的相关知识点,包括Oracle数据库中如何使用`REPLACE()`函数进行内容替换的操作方法、应用场景及注意事项等。 ### Oracle内容替换SQL概述 在Oracle数据库...

    Oracle 子程序and程序包

    ### Oracle函数 函数类似于存储过程,但其主要目的是计算并返回一个值。函数的定义语法如下: ```sql CREATE [OR REPLACE] FUNCTION function_name [parameter_list] RETURN datatype [IS | AS] [local_...

    第12章 Oracle系统函数的应用.ppt

    - **FIND_IN_SET(str,set)**:在逗号分隔的set字符串中查找str的位置。 - **REPLACE(str,from_str,to_str)**:替换字符串str中所有from_str为to_str。 - **LPAD(str,len,pad)**:在字符串str左侧填充pad,直到...

    MySQL多种递归查询方法.docx

    `FIND_IN_SET`函数 - **用途**: 查找字符串在一个字符串列表中的位置。 - **语法**: ```sql FIND_IN_SET(str,strlist) ``` - **示例**: ```sql SELECT FIND_IN_SET('a','a,b,c'); -- 返回1 ``` ##### 4. `...

    FormBuilder_内置函数.docx

    它提供了丰富的内置函数(Built-in subprograms)、选项(Options)、属性(Properties)、系统变量(System variables)以及触发器(Triggers),使得开发者能够构建出高度定制化的用户界面。 #### 二、内置函数...

    MySQL递归查询

    该函数使用 WHILE 循环来递归地查找所有子节点,并使用 `FIND_IN_SET` 函数来判断当前节点是否是子节点。 创建 `getChildLst` 函数的 SQL 语句如下: ```sql CREATE FUNCTION `getChildLst`(rootId INT) RETURNS ...

    北大青鸟Oracle ppt7

    Oracle数据库系统是企业级数据库管理的重要工具,北大青鸟Oracle PPT7主要讲解了子程序和程序包的概念、创建及使用方法。子程序是PL/SQL编程中的关键组成部分,它们有助于实现代码的模块化,提高代码的可读性、可...

    sql函数大全.pdf

    - `FIND_IN_SET()`(在MySQL中):在给定的分隔符列表中查找子串的位置。 这些函数在SQL查询中有着广泛的应用,例如在`SELECT`、`WHERE`子句中进行条件判断、数据过滤和格式化。了解并熟练掌握这些函数能够极大地...

    MySQL实现类似于connect_by_isleaf的功能MySQL方法或存储过程

    这里我们主要探讨两种MySQL的实现方式:一种是使用用户定义的变量和`FIND_IN_SET`函数,另一种是利用存储过程和中间表。 ### 第一种方法:用户定义变量和`FIND_IN_SET`函数 此方法创建了一个名为`lvtao_demo_a`的...

    Mysql树形递归查询的实现方法

    - 使用`find_in_set`函数可能会造成性能瓶颈,因为该函数在内部使用了字符串查找,不是索引友好的操作。 总结,虽然MySQL没有原生的递归查询功能,但通过自定义函数和存储过程的巧妙运用,可以实现树形结构数据的...

    老二牛车第七章理论课子程序和程序包.pdf

    根据给定文件的信息,我们可以详细地探讨Oracle数据库中关于子程序和程序包的相关知识点。 ### 子程序 #### 子程序概述 子程序是PL/SQL中的命名块,被编译并存储在数据库中,可以指定参数并在各种数据库客户端和...

    Oracle语句总结

    本文将根据提供的文件内容,详细介绍几个关键的Oracle SQL*PLUS使用技巧,包括字段显示格式的设置、处理NULL值的方法、以及一些常用的SQL函数等。 #### 一、SQL*PLUS中字段显示格式的设置 在SQL*PLUS中,我们可以...

    oralce Developer中TREE的中文說明.doc

    通过深入理解和熟练使用这些函数,开发者可以构建出丰富的用户界面,允许用户以树形结构浏览和操作数据,这对于展现层级关系复杂的数据,如组织结构、文件系统或者数据库表的层级关系,都非常有帮助。同时,`FIND_...

    SQL_BypassWaf.pdf

    例如,用`case when`代替`if`,用`find_in_set()`或正则表达式代替比较运算符`, `>`。 【函数替换与等价功能】在SQL注入中,函数的使用至关重要。对于函数过滤的情况,可以查找官方文档,寻找所有API函数,使用如`...

    MySQL将一个字段中以逗号分隔的取出来形成新的字段实现

    另外,还有一种方法是使用`FIND_IN_SET()`函数来实现相同的目标: ```sql SELECT g.account_id, g.related_shop_ids, GROUP_CONCAT(s.name) AS shopname FROM sales_hang_account g LEFT JOIN shops s ON FIND_...

Global site tag (gtag.js) - Google Analytics