2016-05-07 18 views
0

Ich habe ein Problem in ORACLE-CERTIFICATE über Teilstring gefunden (ich denke), dass ich keine Ahnung habe, wie das geht. Versteht das jemand ??ORACLE - Substring

Erstellen Sie Tabelle Bonus und machen Sie DML einfügen in Bonus-Tabelle für das folgende Skript: Hinweis: Sie sollten dieses Skript ohne Fehler gegen Ihre Tabelle ausführen und die Ausgabe "Hier ist das Ergebnis" generieren. Hier

select (substr(
      substr(
      substr(
       l.object, 
       instr(l.object,',')+1 
      ), 
      instr(
       substr(
       l.object, 
       instr(l.object,',')+1 
      ), 
       ',' 
      )+1 
     ), 
      instr(
      substr(
       substr(l.object,instr(l.object,',')+1), 
       instr(
       substr(
        l.object, 
        instr(l.object,',')+1 
       ), 
       ',' 
      )+1 
      ), 
      ',' 
     )+1 
     ) 
    ) ref 
from Bonus l 
where l.l_index = 't234' 

ist die Ausgabe:

REF               
------------------------------------------------------------ 
Here is the result 
+0

nicht wirklich klar, was Ihre Frage ist. Die Aufgabe scheint darin zu bestehen, zwei SQL-Anweisungen zu schreiben: (1) eine Anweisung zum Erstellen der Tabelle BONUS und (2) eine Anweisung zum Einfügen einer Zeile in diese Tabelle, so dass die angegebene Abfrage die gewünschte Ausgabe erzeugt. –

Antwort

0

Ja, es wird für den Rest des Strings suchen, der die 3. Komma folgt:

Oracle-Setup:

CREATE TABLE Bonus (l_index, object) AS 
SELECT 't234', ',,,Here is the result' FROM DUAL; 

Abfrage:

select (substr(
      substr(
      substr(
       l.object, 
       instr(l.object,',')+1 
      ), 
      instr(
       substr(
       l.object, 
       instr(l.object,',')+1 
      ), 
       ',' 
      )+1 
     ), 
      instr(
      substr(
       substr(
       l.object, 
       instr(l.object,',')+1 
      ), 
       instr(
       substr(
        l.object, 
        instr(l.object,',')+1 
       ), 
       ',' 
      )+1 
      ), 
      ',' 
     )+1 
     ) 
    ) ref 
from Bonus l 
where l.l_index = 't234' 

Ausgang:

REF     
--------------------- 
Here is the result  

Eine einfachere Version dieser Abfrage wäre:

SELECT SUBSTR(object, INSTR(object, ',', 1, 3) + 1) AS ref 
FROM Bonus 
WHERE l_index = 't234';