oracle转义符括号,sql – 用大括号和通配符转义的Oracle文本

我想要能够在Oracle文本查询中转义搜索条件,使用包含并将转义的条件与通配符组合以具有“双截断”条件。 (我知道我的索引可能不设置为理想的性能,但这是多余的)。我想能够使用花括号语法的最佳可读性,但这不工作。根据这个相关(但不是重复)问题的顶部答案,花括号定义完整的标记。有没有办法禁用或解决此行为?

我宁愿避免不得不在我的搜索条件(根据我的代码中的最后一次选择)转义每个单个字符或尝试搜索字符串中的特殊字符,因为保留字也被认为是“特殊的”。 (注意我没有停止词)下面演示了我的问题。 (不幸的是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


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部