`
dacoolbaby
  • 浏览: 1267256 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

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

阅读更多

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

用于识别以下的情况:

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

如:

v_str_a = aa ;

v_str_b= aa,bb,dd,cc ;

 

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

添加了一些校验。

 

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

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

create or replace function func_str_inArray(p_target    varchar2,
                                            p_str_array varchar2)
  return varchar2 is

  v_flag        varchar2(1);
  v_comma_loc   int;
  v_cut_string  varchar2(300);
  v_rest_string varchar2(2000);
begin
  ------------------------
  --p_target 不能包含","!!!注意!!
  --info:这个函数用于识别目标字符串,是否在一串用“,”分开的字符串内
  ------------------------
  v_flag      := 'N';
  v_comma_loc := instr(p_str_array, ',');

  --如果是对比字符串是空,则返回false
  if nvl(p_str_array, '') = '' then
    return 'N';
  end if;
  --如果没有逗号,直接比较
  if length(p_str_array) > 0 and v_comma_loc = 0 then
    if p_target = p_str_array then
      return 'Y';
    else
      return 'N';
    end if;
  end if;

  v_rest_string := p_str_array;

  while v_comma_loc > 0 loop
    v_cut_string  := substr(v_rest_string, 0, v_comma_loc - 1);
    v_rest_string := substr(v_rest_string,
                            v_comma_loc + 1,
                            length(v_rest_string) - 1);
  
    if p_target = v_cut_string then
      v_flag := 'Y';
    end if;
  
    v_comma_loc := instr(v_rest_string, ',');
  
    if v_comma_loc = 0 and length(v_rest_string) > 0 then
      if p_target = v_rest_string then
        v_flag := 'Y';
      end if;
    end if;
  
  end loop;

  return v_flag;

end;

 

 

 

 

 

 

 

0
0
分享到:
评论
2 楼 dacoolbaby 2013-01-18  
flashtony 写道
我的思路就是字符串前后加上',',进行比较 

select decode(sign(instr(',aa,bb,cc,',',aa,')),1,'Y','N') from dual;

以上须测试,仅供参考


恩,我测试过了。
觉得你的方法更好。
对比2边的字符串,都加上','后,基本就能够定位的很准确了。

甘拜下风~~
1 楼 flashtony 2013-01-18  
我的思路就是字符串前后加上',',进行比较 

select decode(sign(instr(',aa,bb,cc,',',aa,')),1,'Y','N') from dual;

以上须测试,仅供参考

相关推荐

    Oracle_Sql_中常用字符串处理函数

    Oracle Sql 中提供了多种字符串处理函数,用于对字符串进行各种操作,如大小写转换、截取、连接、查找、替换等。下面是 Oracle Sql 中常用的字符串处理函数: 1. 大小写转换函数 Oracle Sql 提供了两个大小写转换...

    oracle通过sql实现字符串转数字oracle函数

    本篇文章将深入探讨如何在SQL查询中利用Oracle提供的函数来实现这一目标。 首先,Oracle提供了一个内置函数`TO_NUMBER()`,它专门用于将字符串转换为数字。`TO_NUMBER(string, format_mask)`函数接收两个参数:要...

    oracle中操作字符串

    通过上述示例可以看出,在Oracle中利用`REGEXP_SUBSTR`函数可以非常灵活地处理字符串,尤其是对于包含特殊符号(如逗号、冒号等)的字符串,能够轻松地提取所需的子字符串。这对于数据处理、报表生成等应用场景具有...

    Oracle拆分字符串,字符串分割的函数

    `instr()` 是Oracle中的一个内建函数,它用于查找子串在目标字符串中的位置。例如,`instr(string, substring)` 返回`substring`在`string`中第一次出现的位置。虽然这不是直接的字符串分割函数,但可以配合其他...

    Oracle字符相似度函数

    在SQL查询中,我们可以直接使用这些函数来比较不同字符串间的相似程度,从而进行数据匹配、模糊搜索等操作。 Oracle提供了多个字符相似度函数,其中最常用的包括`SIMILARITY()`和`UTL_MATCH`包中的几个函数,如`...

    ORACLE字符串函数

    ORACLE 字符串函数 ORACLE 字符串函数是一组用于操作和处理字符串的函数,包括连接、截取、转换、查找、替换、去除空白等操作。 1. 字符串连接函数:`string || string` 该函数用于连接两个字符串,结果是一个新...

    oracle 如何判断一个字符串能否转换为数字?

    ### Oracle 判断字符串是否能转换为数字的方法 在Oracle数据库中,我们经常需要处理各种数据类型...通过上述方法,我们可以在Oracle中有效地判断一个字符串是否可以转换为数字,从而避免因类型转换错误而导致的问题。

    Oracle中如何用SQL检测字段是否包括中文字符

    突然想到Oracle有一个编码转换的函数叫Convert,如果一个字符串编码转换前后不一样表示字符串里面含有非ASCII字符,这样得到结果。后写出来测试了一下,确实可行,5500万记录10秒钟扫描结束。以下是测试用例:  ...

    Oracle查找字符串中某字符出现的次数

    select f_find('Ap@2233ll@@l@@','@') from dual 返回结果为5,代表‘@’在该字符串中出现5次。 同理 select f_find('Ap@223SWEQQQ3ll@@l@@','Q') from dual---返回3,代表Q在字符串中出现了3次, select f_find('我...

    Oracle 验证是否是日期

    本文将详细介绍一个自定义的Oracle函数`FN_ISDATE_JAVA`,该函数用于判断给定的字符串是否能够转换为有效的日期格式。 #### 函数概述 函数`FN_ISDATE_JAVA`的主要功能是验证输入的字符串是否符合日期格式...

    Oracle SQL 内置函数大全

    Oracle SQL 内置函数大全 SQL中的单记录函数 给出整数,返回对应的字符 连接两个字符串 增加或减去月份 用于对查询到的结果进行排序输出

    Oracle字符串处理函数

    INSTR函数用于查找一个字符串在另一个字符串中的位置。基本格式为:`INSTR(C1,C2,[I],[J])`,其中: - C1:目标字符串。 - C2:要查找的子字符串。 - I:起始位置,默认为1。 - J:出现次数,默认为1。 例如: ``...

    Oracle sql 函数大全 比较常用的一些 函数 整理

    本文将对 Oracle SQL 函数大全进行分类和讲解,涵盖字符串函数、字符转换函数、去空格函数、取子串函数、字符串比较函数、字符串操作函数等多种函数。 一、字符转换函数 字符转换函数是将字符或字符串从一种形式...

    常用oracle字符串操作函数

    Oracle数据库是世界上最广泛使用的数据库系统之一,尤其在企业级应用中占据重要地位。在处理数据时,字符串操作函数是...在日常工作中,结合源码和工具,这些字符串操作函数能帮助你编写出高效、简洁的SQL查询语句。

    oracle遍历数据库查找字符串

    INSTR函数则用来查找子串在目标字符串中的位置,返回值为0表示未找到。但手工编写这些查询对于大规模数据库可能非常繁琐且耗时。 这个名为"oracle遍历数据库查找字符串.jar"的工具可能实现了以下功能: 1. **连接...

    oraclesql判断值为空-Oracle-sqlserver的空值(null)判断.pdf

    Oracle SQL 判断值为空OrNull 判断 Oracle SQL 中判断值为空...在 Oracle 和 SQL Server 中,我们可以使用 `NVL` 和 `ISNULL` 函数来判断值为空或 Null,並使用 `isNull` 和 `is not null` 来判断值是否为空或 Null。

    Oracle常用字符串处理函数

    在Oracle数据库中,字符串处理函数是非常重要的工具,它们可以帮助我们高效地管理和操作数据。本文将详细介绍几种常用的字符串处理函数及其应用方法。 #### 1. LTRIM 和 RTRIM LTRIM 和 RTRIM 用于移除字符串左边...

    oracle分隔字符串函数

    ### Oracle 分隔字符串函数知识点详解 #### 一、Oracle 分隔字符串函数介绍 在 Oracle 数据库中处理字符串是一项常见的需求,特别是在数据清洗、格式转换等场景下。Oracle 提供了一系列强大的字符串处理函数来帮助...

    oracle中字符串截取

    本文将详细介绍Oracle中的字符串截取功能及其应用场景,包括常用的`INSTR`和`SUBSTR`函数,并通过具体示例展示如何在实际工作中灵活运用这些函数来满足不同的需求。 #### 二、`INSTR`函数 `INSTR`函数用于查找一个...

Global site tag (gtag.js) - Google Analytics