查询Oracle Clob数据类型

时间:2016-04-13 23:54:08

标签: sql oracle plsql

如何在表中查询clob类型的列?我需要在表中查询某个字符串的列(除了其他条件 - 我可能需要使用Case语句),我最初的想法是查询子查询中的数据,然后使用Case查找匹配顶级查询。但是我现在卡住了,因为我不确定如何在Select中查询clob类型数据!

编辑: 表中的clob列是段落的集合,我试图搜索的字符串可能位于段落中的任何位置。我不确定clob的大小。

3 个答案:

答案 0 :(得分:0)

在许多方面,与“查询varchar2类型的列”(奇怪的术语!)的方式相同。

表格结构:

SQL> describe t
 Name                      Null?    Type
 ------------------------- -------- --------------------------------------------
 COL1                               VARCHAR2(20)
 COL2                               CLOB

表格内容:

SQL> select * from t;

COL1                 COL2
-------------------- -------------------------------------------------------
abc                  afdreed
azx;                 ffare21

查询表(CLOB列的where子句):

SQL> select * from t where col2 like '%dre%';

COL1                 COL2
-------------------- -----------------------------------------------------------
abc                  afdreed

答案 1 :(得分:0)

希望这些例子清楚地说明我想要解释的内容。

SET SQLBL ON;
SET DEFINE OFF;

CREATE TABLE CLOB_TEST
(
clob_in CLOB
);

INSERT
INTO CLOB_TEST VALUES
  (
    'I am working as a DBA and senior database resource in L&T Infotech in Pune India'
  );


SELECT DBMS_LOB.SUBSTR(CLOB_IN,3000) ot FROM CLOB_TEST;

-----------------------------OUTPUT------------------------------------------

OT
I am working as a DBA and senior database resource in L&T Infotech in Pune India

-----------------------------OUTPUT------------------------------------------

答案 2 :(得分:0)

我建议您查看包DBMS_LOB(link)。它有一些对LOB

有用的函数

例如:

  • Substr - 该函数返回LOB的数量字节或字符,从LOB开头的绝对偏移量开始。
  • Insrt - 此函数返回LOB中第n次出现的匹配位置,从您指定的偏移量开始。
  • GetLength - 此函数获取指定LOB的长度。返回以字节或字符为单位的长度。
  • Trim - 此过程将内部LOB的值修剪为您在newlen参数中指定的长度。指定BLOB的字节长度,并指定CLOB的字符长度。

您也可以尝试使用字符串函数。他们中的一些人能够使用不是巨大的lob文件。