Skip to Main Content

SQL & PL/SQL

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Interested in getting your voice heard by members of the Developer Marketing team at Oracle? Check out this post for AppDev or this post for AI focus group information.

Curly Brace with Contains - Oracle Text Searching

user-270z1Feb 21 2023

All, Oracle novice here, so bear with me…

I'm trying to understand how Oracle text searching works (contains(myCol, ‘%abc%’) > 0). I've searched the web but can't seem to find ANTHING that will satisfy my inquiry. I'm interested in escaped characters using curly braces. For example: What is the difference among the 3 search queries below:

First, create table and insert values & index:

create table myTABLE(myCOL varchar2(25));
insert into myTABLE(myCOL ) values ('def');
insert into myTABLE(myCOL ) values ('cdef');
insert into myTABLE(myCOL ) values ('abcdefg');

create index myINDEX on myTABLE(myCOL )
indextype is CTXSYS.CONTEXT

  1. select * from myTABLE where CONTAINS(myCOL , '%def%') > 0;
  2. select * from myTABLE where CONTAINS(myCOL , '%{def}%') > 0;
  3. select * from myTABLE where CONTAINS(myCOL , '{%def%}') > 0;

From my view, #1 appears to be a legitimate wildcard situation (results will be “def”, “cdef”, “abcdefg”). #2 would appear to be identical to #1 (there are no special characters or operators to escape, therefore it should read similar to #1 and return the same results). For #3, Oracle would ignore the percent signs and the results would be “def” only (which brings up the question: If the ‘%’ signs are inactive then the query should be looking for the literal string ‘%def%’, which should return nothing).

What am i missing here? Thanks for any help.

This post has been answered by Barbara Boehmer on Feb 21 2023
Jump to Answer
Comments
Post Details
Added on Feb 21 2023
4 comments
801 views