我正在设计一个网络应用程序,其中有一个搜索页面,可以进行全文搜索(我已经在我感兴趣的文本列上创建了一个CONTEXT索引)。使用Oracle you can do a CONTAINS query运行全文搜索并返回结果 - 这很好,除非你输入一个保留字符,例如:
“ice * AND AND AND Alaska”
你在'ice'之后加上'*'的事实会给你一个Oracle错误,即
ORA-29902: error in executing ODCIIndexStart() routine
ORA-20000: Oracle Text error:
避免这种情况最优雅的方式是什么 - 我知道你可以过滤掉保留字符和关键字 - 但我认为会有更优雅的方式。如果你知道这样的事情,我真的很有兴趣知道: - )
注意:以下是运行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 :(得分:0)
{}
使用大括号来转义字符串或符号。一切 在转义序列的一部分括号内。
使用大括号转义单个字符时,转义 字符在查询中成为单独的标记。
\
使用反斜杠字符转义单个字符或符号。 只有反斜杠后面的字符才会被转义。