2015-01-22 5 views
-1

Я пытаюсь использовать regexp_like() в oracle 11g для достижения текстового поиска.Полнотекстовый поиск с использованием oracle regex

, например, у меня есть таблица называется сообщения где в заголовке столбца, если у меня есть значения

'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') 

Это возвращает записи, имеющие оба названия, где второе значение в нем нет текстовых изображений. Я знаю его, потому что я пользователь '|' в выражении.

То, что я хочу достичь, должно возвращать записи только в том случае, если все слова присутствуют в колонке в любом порядке. Помогите мне с регулярным выражением

+0

Вы пытаетесь сделать это с помощью одного 'regexp_like', а не одного слова поиска? –

+0

Да. Я хочу сделать это с помощью одного выражения. – Nancy

+0

http://docs.oracle.com/cd/B28359_01/text.111/b28303/query.htm#BABGAIHJ –

ответ

0

Надеюсь, это вам поможет.

Я написал плункер в AngularJS. Это просто показать, как работает регулярное выражение.

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

Регулярное выражение, которое вы можете использовать это

/^ (? =. (фото)) (? =. (пост)) (? =. * (Как)) [ a-zA-Z] {1,100} $/

Это означает, что фотографии, сообщения, как должно быть в данном параграфе. Вы можете отрегулировать длину параграфа в соответствии с вашим требованием.

<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> 
+0

Это чувствительно к регистру в вашей демонстрации, но что более важно - к сожалению - Oracle только [поддерживает ограниченное подмножество или регулярное выражение] (https://docs.oracle.com/cd/E11882_01/server.112/e41084/ap_posix.htm # SQLRF020), в основном POSIX с несколькими расширениями Perl. –

+0

Чтобы удалить чувствительность к регистру, вы можете использовать reg exp as -> "/^(?=.*(pictures|PICTURES))(?=.*(post|POST))(?=.*(how|HOW)) [a-zA-Z] {1,100} $ " – Rajeshwar

+0

В Oracle все равно не работает. –

Смежные вопросы