使用oracle正则表达式进行全文搜索

时间:2015-01-22 15:55:47

标签: sql regex oracle oracle11g full-text-search

我试图在oracle 11g中使用regexp_like()来实现文本搜索。

例如我有一个名为posts的表,如果我有值

,则在title列中
'How to create a new post with pictures and videos'
'How to create a new post enter code here'

如果我写了一个查询

select * from posts where regexp_like(title, '.*pictures.*|.*how.*|.*post.*', 'i')

它返回具有两个标题的记录,其中第二个值中没有单词图片。我知道它因为我用户'|'在表达中。

我想要实现的是,只有当列中的所有单词都以任何顺序出现时,它才会返回记录请帮我正则表达式

1 个答案:

答案 0 :(得分:0)

希望这会对你有所帮助。

我在AngularJS写了一个plunker。它只是为了演示正则表达式的工作原理。

http://plnkr.co/edit/6WrCCAfNwidVxKkRFH9l?p=preview

您可以使用的正则表达式是

/ ^(?=。(图片))(?=。(post))(?=。*(how))[a-zA-Z] {1,100} $ / < / p>

这意味着图片,帖子,在给定的段落中应该如何。 您可以根据自己的要求调整paragrah的长度。

<form role="form" name="myform">
<div>
    <div class="col-sm-8">
        <input type="text" ng-model="user" name="inputfield" required="true"  ng-pattern="/^(?=.*(pictures))(?=.*(post))(?=.*(how))[a-zA-Z ]{1,100}$/">
        <span ng-show="myform.inputfield.$dirty && !myform.inputfield.$error.required && myform.inputfield.$error.pattern">
          <small class="text-danger">
          Not Matching
        </small>
       </span>

    </div>
  </div>
</form>