有些应用,将大文本保存在Oracle的BLOB类型字段中,如果希望对内容进行搜索,使用传统的LIKE是会有问题的,会报数据类型错误:
ORA-00932: 数据类型不一致: 应为 NUMBER, 但却获得 BLOB
这个时候可以使用以下方式进行搜索:
SELECT *
FROM TableName
WHERE
dbms_lob.instr(ColumnName,utl_raw.cast_to_raw('关键字'),1,1)<>0
但是这样搜索的效率比较慢,毕竟是针对大文本进行操作。针对这个,Oracle中可以使用全文索引和CONTAINS函数进行搜索。