Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

Oracle शामिल काम नहीं कर रहा है

दो संभावित कारण - इंडेक्स को सिंक्रोनाइज़ नहीं किया जा सकता है, और CONTAINS LIKE . के दौरान शब्दों से मेल खाता प्रतीत होता है तार से मेल खाता है।

दो स्ट्रिंग्स का एक उदाहरण, जहां LIKE दोनों से मेल खाता है, लेकिन CONTAINS न तो मेल खाता है:

create table test1(must_fix_by varchar2(4000));
create index cidx_mustfixby on test1(must_fix_by) indextype is ctxsys.context;
insert into test1 values('Q234567');
insert into test1 values('Q2 234567');
select * from test1 where must_fix_by like 'Q2%';

MUST_FIX_BY
-----------
Q234567
Q2 234567

select * from test1 where contains(must_fix_by, 'Q2') > 0;

no rows selected

डिफ़ॉल्ट रूप से, CONTEXT इंडेक्स को मैन्युअल रूप से सिंक्रनाइज़ होना चाहिए . आपको या तो चलाने की आवश्यकता है:exec ctx_ddl.sync_index('cidx_mustfixby'); , या आपको on commit . के साथ आपको अनुक्रमणिका बनाने की आवश्यकता है ।

exec ctx_ddl.sync_index('cidx_mustfixby');
select * from test1 where contains(must_fix_by, 'Q2') > 0;

MUST_FIX_BY
-----------
Q2 234567

यह मुद्दों में से एक को ठीक करता है। लेकिन Q234567 अभी भी मेल नहीं खाता है। मैं Oracle टेक्स्ट के बारे में बहुत कुछ नहीं जानता, और मुझे इसका सरल विवरण भी नहीं मिल रहा है कि कैसे CONTAINS काम करता है। लेकिन ऐसा लगता है कि यह स्ट्रिंग्स के बजाय पूर्ण शब्दों पर आधारित है। Q2 और अन्य वर्णों के बीच किसी प्रकार की शब्द सीमा होनी चाहिए ताकि इसे एक साधारण CONTAINS द्वारा उठाया जा सके। फ़िल्टर करें।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle के तहत बड़े लेनदेन को कैसे संभालें?

  2. SQL क्वेरी में संयोजित मान दिखाएं

  3. टसेपेल्लिन Oracle SQL क्वेरी आगे चलती है

  4. एक पीएल/एसक्यूएल वैरिएबल में एक आईएन क्लॉज में संग्रहीत मूल्य पास करें

  5. मैं एक संग्रहित प्रक्रिया आउटपुट पैरामीटर कैसे प्राप्त करूं जो काम करने के लिए एक सरणी है?