2017-06-09 21 views
0

創建上下文索引與聲明:與Oracle多列上下文索引返回行

create TABLE test_context_index 
(id number, 
column1 VARCHAR2(30), 
column2 VARCHAR2(30), 
column3 VARCHAR2(30) 
) 
/
INSERT INTO test_context_index (ID,COLUMN1,COLUMN2,COLUMN3) 
VALUES(1,'tinhah','test','test data'); 
INSERT INTO test_context_index (ID,COLUMN1,COLUMN2,COLUMN3) 
VALUES(2,'tinehaeh','test 12','abc'); 
/
begin 
ctx_ddl.create_preference('my_multi', 'MULTI_COLUMN_DATASTORE'); 
ctx_ddl.set_attribute('my_multi', 'columns', 'column1, column2, column3'); 
end; 


create index myindex on test_context_index(column1) 
    indextype is ctxsys.context 
    parameters ('DATASTORE my_multi'); 

我成功創建。 我運行語句返回無行,幫幫我!

Select * from test_context_index where contains (column1, 'h%') > 0; 

回答

0

嘗試:

Select * from test_context_index where column1 like '%h%'; 
+0

ie ie need a wildcar d字符的兩側 –

+0

它的意思是包含h。如果你想讓你的左邊包含h,你可以'h%' –

0

將一個%的開始,也是結束:

Select * from test_context_index where contains (column1, '%h%') > 0; 


ID COLUMN1 COLUMN2 COLUMN3 
-- ------- ------- ------- 
1 tinhah  test  test data 
2 tinehaeh test 12 abc 

文本索引仍將即使在開始通配符使用:

explain plan for Select * from test_context_index where contains (column1, '%h%') > 0; 

select * from table(dbms_xplan.display); 


Plan hash value: 2922841387 

---------------------------------------------------------- 
| Id | Operation     | Name    | 
---------------------------------------------------------- 
| 0 | SELECT STATEMENT   |     | 
| 1 | TABLE ACCESS BY INDEX ROWID| TEST_CONTEXT_INDEX | 
| 2 | DOMAIN INDEX    | MYINDEX   | 
----------------------------------------------------------