今天需要做一个查询,判断对表JC_CXFANGA中BLOB类型字段FANGA_SQL字段里面是否包含字符WCS,这时需要用到DBMS_LOC包中的函数DBMS_LOB.INSTR('被查询字段',‘查询内容’,开始位置,第几次出现)
DECLARE
position INTEGER;
TYPE_BLOB JC_CXFANGA.FANGA_SQL%TYPE;
BEGIN
FOR RX IN (SELECT FANGA_NO FROM JC_CXFANGA)
LOOP
SELECT FANGA_SQL INTO TYPE_BLOB FROM JC_CXFANGA
WHERE FANGA_NO=RX.FANGA_NO;
position := DBMS_LOB.INSTR(TYPE_BLOB,HEXTORAW(utl_raw.cast_to_raw('WCS')), 1,
1);
IF position>0 THEN
DBMS_OUTPUT.put_line('在查询方案:'||RX.FANGA_NO||'找到了');
END IF;
END LOOP;
END;
刚开始没有加红色部分,报错,提示HEX到RAW转换错误,HEXTORAW和utl_raw.cast_to_raw详细参考网址:http://blog.csdn.net/duanning397/article/details/7684897
扩展:在ORACLE中LOB类型专门用于存储大对象的数据,包括大文本,图形/图象,视频剪切等大数据
1.LOB类型
ORACLE将lob分为两种:内部lob和外部lob
内部lob包括:clob,blob和nclob三种类型,被存储在数据库中,并且支持事务操作
外部LOB只有BFILE一种类型,该类型的数据被存储在操作系统OS文件中,并且不支持事务操作.
CLOB/NCLOB用于存储用于存储大批量字符数据,BLOB用于存储大批量二进制数据,BFILE则存储着指向OS文件的指针
加载中,请稍候......