2016-04-13 46 views
0

如何爲clob類型的列查詢表?我需要爲某個字符串查詢表的列(除了其他條件 - 我可能需要使用Case語句),我最初的想法是查詢子查詢中的數據,然後使用Case查找匹配頂部查詢。但我現在卡住了,因爲我不知道如何查詢選擇中的clob類型數據!查詢Oracle Clob數據類型

編輯: 表中的clob列是一組段落,我嘗試搜索的字符串可能位於段落中的任何位置。我不確定clob的大小。

+0

長度clob:從...選擇長度(... clob expr ...) – mathguy

回答

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------------------------------------------ 
+0

當我嘗試這樣做時出現錯誤:ORA-06502:PL/SQL:數字或值錯誤:字符串緩衝區太小 – Skn

0

在許多方面,與「查詢列」(奇怪的術語!)類型varchar2的方式相同。

表結構:

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

表的內容:

SQL> select * from t; 

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

查詢表(其中對CLOB列條款):

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

COL1     COL2 
-------------------- ----------------------------------------------------------- 
abc     afdreed 
+0

我不確定您是否完全閱讀我的問題。我需要在我的select語句中單獨列出列,但我無法這樣做。 – Skn

+0

我不明白。在我的select語句中,我分別列出了col2,它是CLOB數據類型的一列。也許你可以舉一個你正在試圖做什麼並且沒有工作的例子? – mathguy

+0

我想這樣的事情:選擇案例,當col2像'%abc%'那麼ABC從(選擇col2從哪裏.......)這有助於?這是因爲我首先需要查詢數據的一個子集,然後根據案例顯示它。 – Skn

0

我建議你看看包DBMS_LOB(link)。它有一些用於與LOB

工作例如有用的功能:

  • Substr - 該函數返回一個LOB的量字節或字符,從絕對從LOB的開始偏移開始。
  • Insrt - 此函數從您指定的偏移量開始,返回LOB中第n次出現模式的匹配位置。
  • GetLength - 該函數獲取指定LOB的長度。返回字節或字符的長度。
  • Trim - 此過程將內部LOB的值修剪爲您在newlen參數中指定的長度。指定BLOB的長度(以字節爲單位),並指定CLOB的字符長度。

此外,您可以嘗試使用字符串函數。他們中的一些人能夠處理不大的高球文件。

相關問題