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

Я хочу иметь возможность избежать критериев поиска в текстовом запросе Oracle, используяcontains и объединить экранированные критерии с подстановочными знаками, чтобы получить «дважды усеченные» критерии. (Я знаю, что мои индексы не могут быть настроены на идеальную производительность, но это излишне). Я хочу иметь возможность использовать синтаксис фигурных скобок для лучшей читаемости, но это не работает. Согласно основному ответу на этот связанный (но не дублирующий) вопрос, фигурные скобки определяют полные токены. Есть ли способ отключить или обойти это поведение?

Oracle Text: Как санировать ввод пользователя

Я бы предпочел избегать экранирования каждого символа в моих критериях поиска (в соответствии с последним выбором в моем коде) или пытаться искать в строке специальные символы, поскольку зарезервированные слова также считаются «специальными». (Обратите внимание, что у меня нет стоп-слов) Следующее демонстрирует мою проблему. (К сожалению, SQLFiddle не поддерживает текст Oracle):

create table MY_TABLE(MY_COL varchar2(20));
insert into MY_TABLE(MY_COL) values ('abc');
insert into MY_TABLE(MY_COL) values ('abcd');
insert into MY_TABLE(MY_COL) values ('abcde');
insert into MY_TABLE(MY_COL) values ('bcd');
insert into MY_TABLE(MY_COL) values ('bcde');

create index FTIX on MY_TABLE (MY_COL)
indextype is CTXSYS.CONTEXT
PARAMETERS ('STOPLIST CTXSYS.EMPTY_STOPLIST SYNC (ON COMMIT)');

select * from MY_TABLE where CONTAINS(MY_COL, '%bcd%') > 0; --expected results
select * from MY_TABLE where CONTAINS(MY_COL, '%{bcd}%') > 0; --no results
select * from MY_TABLE where CONTAINS(MY_COL, '{bcd}') > 0; --returns bcd
select * from MY_TABLE where CONTAINS(MY_COL, '{%bcd%}') > 0; --returns bcd
select * from MY_TABLE where CONTAINS(MY_COL, '%\b\c\d%') > 0; --expected results

Ответы на вопрос(1)

Ваш ответ на вопрос