2013-02-15 78 views
1

我正在設計一個web應用程序,並且有一個搜索頁面,可以進行全文搜索(我在我感興趣的文本列上創建了一個CONTEXT索引)。隨着Oracle you can do a CONTAINS query運行全文搜索並返回結果 - 這是偉大的,但如果你把在保留字符如:解析Oracle文本搜索/查詢中的保留字符?

「冰*和地點和阿拉斯加」

事實你把一個「*」「冰」後,將讓你的Oracle錯誤即

ORA-29902: error in executing ODCIIndexStart() routine 
ORA-20000: Oracle Text error: 

什麼是最優雅的方式來避免這一點 - 我知道你可以過濾掉保留字符和關鍵字 - 但我會認爲會有更多的e legant的方式。如果你知道這樣的事情,我會很感興趣知道:-)


注:下面是運行Oracle文本搜索代碼,沒有壯觀:

OracleCommand cmd = new OracleCommand("SELECT ref_id, title, table_name, description FROM v_all_media WHERE CONTAINS (title, :pTitle) > 0", conn); 
cmd.Parameters.Add("pTitle", title); 
OracleDataReader reader = cmd.ExecuteReader(); 

回答

0

{}

使用大括號來轉義字符或符號的字符串。在轉義序列的考慮部分中的一組大括號內的所有內容。

當您使用大括號來轉義單個字符時,轉義的 字符在查詢中成爲單獨的標記。

\

使用反斜槓字符來轉義單個字符或符號。 只有緊隨反斜線的字符纔會被轉義。

Special Characters in Queries