oracle转义符括号,sql – 用大括号和通配符转义的Oracle文本
发布日期:2022-02-03 15:25:06 浏览次数:1 分类:技术文章

本文共 1064 字,大约阅读时间需要 3 分钟。

我想要能够在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

转载地址:https://blog.csdn.net/weixin_35600779/article/details/116349917 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:改oracle字段长度吗,字段长度怎么改不了了???
下一篇:oracle加入开机自启动,设置oracle开机自启动

发表评论

最新留言

网站不错 人气很旺了 加油
[***.208.126.232]2022年08月14日 12时00分26秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

最新文章