prog:sql_regular_expression

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
prog:sql_regular_expression [2022/11/08 17:08] – [RegEx und ein Outer Join mit der (+) Syntax] gpipperrprog:sql_regular_expression [2022/11/08 17:19] (aktuell) – [RegEx und ein Outer Join mit der (+) Syntax] gpipperr
Zeile 449: Zeile 449:
 === String in Elemente zerlegen === === String in Elemente zerlegen ===
  
-In einer Log Tabelle sind Bestimmte Informationen in einer Liste aufgeführt die mit | getrennt ist.+In einer Log Tabelle sind in einer Spalte bestimmte Informationen in einer Liste aufgeführtdie mit | getrennt ist.
  
 Wie: " Column1:ValueA | Column2:ValueB | Column3:ValueC | Column4:ValueD | Column4:ValueE | " Wie: " Column1:ValueA | Column2:ValueB | Column3:ValueC | Column4:ValueD | Column4:ValueE | "
  
-Ziel ist es Value von Column3  zu extrahieren, wir brauchen alles zwischen den "|" und dann den dritten Match:+Ziel ist es den Wert von Column3 zu extrahieren, wir brauchen also alles jeweils zwischen den "|" und dann den dritten Match:
  
 <code sql> <code sql>
Zeile 468: Zeile 468:
           ),':')           ),':')
         as Column3         as Column3
-from  data a;       +from  data a;   
 + 
 +Column3 
 +-------- 
 + 
 +ValueC     
  
 </code> </code>
  
 +Der Trick dahinter ist es den String zu zerlegen mit Matches für eine Zeichenkette OHNE den "|" und den "3" Match herauszufiltern, diesen Teilstring dann bei ":" zu trennen und dann mit Trimmen dafür sorgen das Leerzeichen und das ":" verschwinden.
 +
 +Alle in einer Spalte darstellen:
 +
 +<code sql>
 +WITH DATA AS ( 
 +   SELECT 'Column1:ValueA | Column2:ValueB | Column3:ValueC | Column4:ValueD | Column5:ValueE |'  AS log_val 
 +      FROM dual
 +  )
 +  SELECT trim(
 +               regexp_substr(a.log_val, '[^|]+', 1, level)
 +        ) as columValues
 +   FROM DATA a 
 +  CONNECT BY level<regexp_count(a.log_val,'[^|]+')+1;
 +  
 +columValues
 +----------
 +Column1:ValueA
 +Column2:ValueB
 +Column3:ValueC
 +Column4:ValueD
 +Column5:ValueE  
 +
 +</code>
  
 ---- ----
prog/sql_regular_expression.txt · Zuletzt geändert: 2022/11/08 17:19 von gpipperr