2015-07-10 22 views
0

我有一個存儲某些文檔內容的BLOB字段。Oracle DB - 包含函數中的特殊字符

我的Java程序想要做對領域的搜索,

這裏是我的SQL語句:

Select * from table_A where CONTAINS(BLOB_FIELD,'{Keyword}') > 0; 

當用戶輸入 'P-' 和 'P =',他們得到了一些結果。 我想解決這個問題,謝謝!

+0

當BLOB_FIELD包含'P.1/1'(頁碼)時,我發現'P-','P =','P''都會輸出相同的結果 – Ricky

+0

BLOB_FIELD中存儲了哪種類型的文檔? (pdf,doc?) –

回答

0

如果您想要搜索實際字符( - ,=,*,%等),CONTAINS會使用一定數量的字符/字詞,這些字符/字詞必須轉義。嘗試「P \ - 」,看看是否有幫助...如果沒有看到下面。

此外,您的LEXER設置確定P後面的一個句點確定了單詞分隔符(句尾)的機率非常高。這由DBA控制,並具有一些相當複雜的邏輯,用於確定文本搜索時如何拆分/不拆分單詞。

+0

Thank you but add''is fail。 – Ricky

+0

正如我所說的那些我列出的僅僅是許多包含「special」的字符中的一小部分,*是另一個。 docs.oracle.com/cd/B28359_01/text.111/b28304/cqspcl.htm#CCREF2093編輯:我剛剛注意到在這裏發佈時需要轉義反斜槓字符。 – TheMadDBA

+0

我已經從Oracle讀過這些文檔,但沒有幫助,我用{}逃脫了這個角色,但是問題依然存在。 – Ricky