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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值