【发布时间】:2020-05-23 11:18:01
【问题描述】:
我们创建了一个 BLOB 类型列来存储 6000 到 7000 个 ASCII 字符的有效负载。 我正在使用以下代码插入有效负载。
PreparedStatement stmt=conn.prepareStatement(insertQuery);
String record="My ASCII Payload";
stmt.setBytes(1, record.getBytes());
stmt.execute();
当我在查询下运行时,我可以在输出中看到字符的长度。
select dbms_lob.getLength(MY_PAYLOAD)
from RAW_DATA;
6085
我想在这个 BLOB 列中执行文本搜索,我尝试了以下选项,但没有任何效果。在 BLOB 列中执行文本搜索的正确方法是什么?
SELECT * FROM RAW_DATA t
WHERE dbms_lob.instr(t.MY_PAYLOAD,utl_raw.cast_to_raw(‘1234’))>0
select *
from RAW_DATA
where dbms_lob.instr (MY_PAYLOAD, -- the blob
utl_raw.cast_to_raw ('1234'),
1, -- where to start. i.e. offset
1 -- Which occurrance i.e. 1=first
) > 0
【问题讨论】:
-
这有帮助吗? oracle blob text search