Текстовый подстановочный знак Oracle с одним символом не соответствует пробелу

Допустим, вам нужно найти комбинацию слов

Затем, используя текст оракула, это будет выглядеть так:

select * from some_table
where contains(column, '%word1 word2%');

Но что, если бы мог быть любой другой разделительный символ. ".," Например. то вы бы пойти на что-то вроде этого

select * from some_table
where contains(column, '%word1_word2%');

в конечном итоге это не сработает, так как в тексте оракула одиночный подстановочный знак «_» по какой-то причине не соответствует пробелам, и в результате вы потеряете такие записи, как:

word1 word2

Есть ли способы решить эту проблему?


person noobsaibot    schedule 11.12.2017    source источник
comment
Я понятия не имею о функции contains() или 12c, но, возможно, вы могли бы использовать оператор OR как с contains(column, '%word1 word2%') OR contains(column, '%word1_word2%');   -  person pOrinG    schedule 12.12.2017
comment
это может быть медленным и не масштабируется   -  person noobsaibot    schedule 14.12.2017


Ответы (1)


Есть несколько способов, которыми вы можете воспользоваться для проверки результатов поиска.

Вы можете использовать ключевое слово «НРАВИТСЯ» для поиска интересующих вас слов. В качестве примера, пожалуйста, проверьте ниже. Вы можете комбинировать шаблоны, которые вы ищете, с помощью ключевого слова «ИЛИ».

select * from some_table where column LIKE '%word1 word2%' OR '%word1_word2%';

А также вы можете использовать условие ORACLE REGEXP_LIKE, чтобы получить то же самое.

Ваше здоровье !!

person Ruvani Jayaweera    schedule 14.12.2017
comment
Я ищу решение Oracle Text - person noobsaibot; 14.12.2017