2017-05-05 4 views
1

Lassen Sie mich veranschaulichen, was ich mit einem Beispiel brauche.So finden Sie eine bestimmte Zeichenfolge in einem Clob, die eine andere Zeichenfolge als Präfix hat

Angenommen, meine Tabelle hat zwei Spalten, die erste Spalte ist der Primärschlüssel und die zweite Spalte ist ein CLOB.

Angenommen, die clob Spalte in meiner Tabelle, die die folgenden Daten enthält:

Method_name : Test_method_124 

Grading: As Specified 

Grading Time Period: 2016 Fall 

Ich möchte die Zeichenfolge finden, die nach dem ‚Grading Zeitraum‘ ist. Die Ausgabe meiner Abfrage sollte der Primärschlüssel sein (also die erste Spalte der Tabelle) und "2016 Herbst"

+0

1) Was ist im Clob der Primärschlüssel? 2) Wo wird dieser Clob gespeichert und wie und wo möchten Sie Primärschlüssel und Clob speichern? – Utsav

+0

Teilen reproduzierbare Beispiel, so dass wir das Muster in der zweiten Spalte herausfinden können –

Antwort

0

Verwenden Sie DBMS_LOB-Funktionen, um mit CLOBs zu arbeiten. instr() gibt den Start-Offset des gesuchten Musters in einem CLOB zurück. substr() gibt einen Teilstring zurück, der n Zeichen aus dem angegebenen Offset in einem CLOB ist. Find out more

SQL> select id, 
    2  dbms_lob.substr(txt, 30, dbms_lob.instr(txt,'Grading Time Period')+21) as snippet 
    3 from t23 
    4 where dbms_lob.instr(txt, 'Grading Time Period') > 0: 

     ID SNIPPET 
---------- ---------- 
     1 2016 Fall 

SQL> 

Dies ist eine schlechte Art und Weise Daten zu speichern. Wirklich sollte dies richtig in Tabellenspalten normalisiert werden. Aber auch XML oder JSON wäre eine bessere Lösung. Sieh es dir so an. Wenn Sie die Grading extrahieren möchten, wie würden Sie den Puffer angeben, um sicherzustellen, dass Sie nur As Specified gegriffen haben? Es ist möglich, aber es ist knorrig.

+0

Dank @APC Sie ersparte mir eine Menge Zeit Prost! – Maxwell

Verwandte Themen