2017-03-12 5 views
0

Ich habe eine Tabelle hält Daten so etwas.Parsing Daten in Sql

(ID:1683-->NAME:-->NORAH-->AGE:23-->HEIGHT:175) 

Allerdings möchte ich die Daten in der analysierten Form auswählen. Wie kann ich das in Oracle SQL tun?

ID NAME AGE HEIGHT 
1683 Norah 23 175 

Vielen Dank im Voraus

+0

Bitte zeigen Definition EXACT Datenformat einschließlich Tabelle. Deine Frage ist unklar? Name, Alter usw. sind alle in einer Spalte gespeichert ?? FYI, wenn es eine große Spalte ist, ist das ein schlechtes Design, und Sie möchten es vielleicht normalisieren. – OldProgrammer

+0

Sein Design ist leider so. Ich habe nur eine ausgewählte Zuteilung für diese Tabelle und ich möchte "->" eliminieren und habe 4 Spalten – asdfg

+0

IHMO PL/SQL ist nicht das richtige Werkzeug dafür. Es wäre einfacher zu pflegen, wenn es als gespeicherte Java-Prozedur implementiert wurde. – ibre5041

Antwort

1

Try this:

with test_data as 
(select 'ID:1683-->NAME:-->NORAH-->AGE:23-->HEIGHT:175' data from dual) 

select 
regexp_replace(regexp_replace(data, 'ID\:'),'-->.*') ID, 
regexp_replace(regexp_replace(data, 'ID.*NAME\:-->'),'-->.*') NAME, 
regexp_replace(regexp_replace(data, '.*AGE\:'),'-->.*') AGE, 
regexp_replace(regexp_replace(data, '.*HEIGHT\:'),'-->.*') HEIGHT 
from test_data 
+1

Danke vielmals Hilfe. Du hast meinen Tag gerettet :) – asdfg

-1

Ist Ihr Beispiel eine Zeile in der Tabelle?

Ich denke, man kann nur

SELECT * FROM <table name> WHERE ID = 1683 
+0

Ich habe eine Zeile, die aussieht ID: 1683 -> NAME: -> NORAH -> ALTER: 23 -> HÖHE: 175. Alles, was ich tun will, möchte ich in eine sinnvollere Form umwandeln. – asdfg