暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle INSTR函数来查找值的精确匹配

askTom 2017-11-15
997

问题描述

嗨,

挣扎了一段时间。
我有一个从表格列读取的列表- (1,2,3,10,11)
我需要检查我的号码是否存在于上述列表中
所以对于1 INSTR(1,列表) 返回2,这很好。
现在的问题是,如果列表包含 (2,3、10、11),如果我再次运行INSTR(1,列表),它会重新出现一个我不想要的数字10的事件。
我使用 '1' 作为搜索,但随后它返回由于11的发生,为 (3,6,10,11,12)

有人能帮忙吗?如果有办法做精确搜索?

专家解答

一种解决方法是使用正则表达式。

搜索您的价值:

-前面是逗号或行开头 (^)
-后跟逗号或行尾 ($)

with rws as (
  select '1,2,3,10,11,12' str from dual union all
  select '2,3,10,11' str from dual union all
  select '2,3,10,11,12' str from dual 
)
  select * from rws
  where  regexp_instr(str, '(^|,)1(,|$)') > 0;

STR              
1,2,3,10,11,12
复制

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论