2016-04-13 21 views
0

Wie frage ich eine Tabelle für eine Spalte, die Clob-Typ ist? Ich muss die Tabelle nach der Spalte für eine bestimmte Zeichenfolge abfragen (zusätzlich zu anderen Bedingungen - ich muss möglicherweise Case-Anweisung verwenden), meine ursprüngliche Idee war, die Daten in der Unterabfrage abzufragen und dann eine Übereinstimmung mit Case in zu finden die oberste Abfrage Ich bin jedoch festgefahren, da ich nicht sicher bin, wie man Clob-Daten in Select! abfragt.Abfrage Oracle Clob Datentyp

Bearbeiten: Die Spalte clob in der Tabelle besteht aus Absätzen, und die Zeichenfolge, nach der ich suche, kann an einer beliebigen Position im Absatz sein. Und ich bin mir nicht sicher über die Größe des Clobs.

+0

Länge des Clob: Wählen Länge (... Clob Ausdruck ...) von .... – mathguy

Antwort

0

Hoffnung dieser Beispiele zeigt deutlich, was ich Ich versuche es zu erklären.

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

Ich erhalte einen Fehler, wenn ich das versuche: ORA-06502: PL/SQL: numerischer oder Wertfehler: Zeichenkettenpuffer zu klein – Skn

0

In vielerlei Hinsicht, wie Sie "eine Spalte" (ungerade Terminologie!) Vom Typ varchar2 "abfragen".

Tabellenstruktur:

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

Tabelleninhalt:

SQL> select * from t; 

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

Abfrage der Tabelle (where-Klausel auf der CLOB Spalte):

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

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

Ich bin mir nicht sicher, ob Sie meine Frage vollständig lesen. Ich muss die Spalte separat in meiner Select-Anweisung aufführen und kann dies nicht tun. – Skn

+0

Ich verstehe es nicht. In meiner Select-Anweisung habe ich col2 separat aufgelistet, was eine Spalte vom CLOB-Datentyp ist. Vielleicht können Sie ein Beispiel geben für genau das, was Sie versuchen zu tun und nicht funktioniert? – mathguy

+0

Ich versuche für etwas in der Art: Wählen Sie Groß-/Kleinschreibung bei Spalte2 wie '% abc%' und dann ABC von (wählen Sie Spalte2 von t aus, wo .......) hilft das? Dies liegt daran, dass ich zuerst eine Teilmenge der Daten abfragen und dann basierend auf dem Fall anzeigen muss. – Skn

0

Ich würde vorschlagen, dass Sie einen Blick auf das Paket DBMS_LOB (link) haben. Es hat einige Funktionen, die für mit LOB Arbeits

zum Beispiel:

  • Substr - Die Funktion gibt Menge Bytes oder Zeichen eines LOB, von einem absoluten vom Beginn des LOBES Position offset.
  • Insrt - Diese Funktion gibt die übereinstimmende Position des n-ten Vorkommens des Musters im LOB beginnend mit dem von Ihnen angegebenen Offset zurück.
  • GetLength - Diese Funktion erhält die Länge des angegebenen LOB. Die Länge in Bytes oder Zeichen wird zurückgegeben.
  • Trim - Mit dieser Prozedur wird der Wert des internen LOB auf die Länge gekürzt, die Sie im Parameter newlen angeben. Geben Sie die Länge in Byte für BLOBs an und geben Sie die Länge in Zeichen für CLOBs an.

Auch Sie können versuchen, mit String-Funktionen zu arbeiten. Einige von ihnen können mit nicht sehr großen Lob-Dateien arbeiten.

Verwandte Themen