`
dacoolbaby
  • 浏览: 1259050 次
  • 性别: 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拆分字符串,字符串分割的函数

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

    Oracle字符相似度函数

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

    ORACLE字符串函数

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

    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 SQL 内置函数大全

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

    Oracle 验证是否是日期

    Oracle 验证是否是日期,帮助你验证给定的字符串是否可以转化为日期。

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

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

    常用oracle字符串操作函数

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

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

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

    oracle遍历数据库查找字符串

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

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

    oracle里面没有sql server里面的类似函数is_number来判断能否转换为数字,怎么办?本文给出答案。

    Oracle 基础语句 函数大全(字符串函数

    ORACLE PL/SQL 字符串函数、数学函数、日期函数 --【字符串函数】 --字符串截取substr(字段名,起始点,个数) select Name,substr(Name,2,4),substr(Name,0,3),substr(Name,-2,3),substr(Name,-2,1) from t1; --字符...

    ORACLE常用数值函数、转换函数、字符串函数介绍

    Oracle数据库系统提供了丰富的函数库,包括数值函数、转换函数和字符串函数,这些函数极大地扩展了SQL语言的功能,方便了数据库操作。以下是对标题和描述中提及的一些重要函数的详细解释: 1. **数值函数** - **...

    Oracle字段转字符串/多行记录合并/连接/聚合字符串的几种方法

    在Oracle数据库中,有时我们需要将多个字段值转换为单个字符串,或者将多行记录合并成一行,这在数据处理和报告生成时尤其常见。Oracle提供了多种方法来实现这一目标,包括使用内置函数、PL/SQL过程以及一些高级特性...

    Oracle中实现Split函数功能

    Oracle 中实现 Split 函数功能的优点是可以灵活地处理不同的分隔符和字符串长度。同时,这个函数也可以与其他 Oracle 函数和操作符结合使用,以实现更加复杂的数据处理任务。 在实际应用中,Oracle 中实现 Split ...

    oracle日期时间判断函数

    针对标题"oracle日期时间判断函数"和描述中提到的内容,我们可以深入探讨两个关键的函数,它们主要用于判断字符串是否可以转换为合法的日期时间格式。 1. TO_DATE函数: TO_DATE是Oracle中用于将字符串转换为日期...

    Oracle JSON 字符串处理实例

    在实际应用中,我们可能需要将JSON字符串存储在`CLOB`或`BLOB`类型的列中,然后利用Oracle的JSON函数进行读取和操作。例如,`JSON_OBJECT_T`和`JSON_ARRAY_T`是两个实用的类型,它们分别代表JSON对象和数组,可以...

Global site tag (gtag.js) - Google Analytics