Oracle Regexp_like 使用 AND 子句
Posted
技术标签:
【中文标题】Oracle Regexp_like 使用 AND 子句【英文标题】:Oracle Regexp_like using AND clause 【发布时间】:2015-05-13 00:03:17 【问题描述】:我希望使用 regexp_like 在名称字段中查找所有出现的“Dr. Jones
”。我可以做 OR(所有名字都带有 DR 或 JONES),但我需要两个名字都出现在字段中。
有没有一种简单的方法可以在不使用多个语句的情况下使用 regexp_like 来做到这一点?
我正在寻找捷径。下面的答案在一个简单的情况下给出了它。 我知道我可以拥有:
where regexp_like(color_code,'red|blue|green','i');
它会给我任何颜色代码的记录,其中包含这三个名称中的任何一个。 我正在寻找的是这样的:
where regexp_like(color_code,'red&blue&green','i');
这只会选择名称中包含所有三种颜色的记录,但它们可以按任意顺序排列:红蓝绿、绿紫蓝黑红、黄红橙绿蓝
都会列出来
【问题讨论】:
【参考方案1】:select * from mytable
where regexp_like(txt,'(Dr.+Jones+)|(Jones.+Dr+)','i');
ok 去掉了 dr 之后的句号并允许切换单词
【讨论】:
这里是它的小提琴我添加了你的两个例子sqlfiddle.com/#!4/b78944/2 不,这是我想要的方式,谢谢!!!!一整天都在绞尽脑汁想办法解决这个问题 @user2744722 - 您应该使用更正的解决方案编辑您的原始答案,而不是用第二个响应污染线程。请删除您的原始答案。 (你也可以整理一下,这样在没有第一反应的情况下也有意义)。 更重要的是,您的regex
包含 DR 和 JONES 的任何句子的误报。看看我的version of your SQLFiddle。包含我们不希望出现在结果集中的测试数据总是值得的。以上是关于Oracle Regexp_like 使用 AND 子句的主要内容,如果未能解决你的问题,请参考以下文章