2017-04-19 3 views
-1

Ich bin neu in der DB-Entwicklung. Ich habe eine neue Aufgabe. Ich brauche ein Muster aus 13xxxxx aus einer Spalte beginnen zu finden, die Daten wie unten:Muster suchen mit regulären Ausdruck in Oracle plsql

["1301800-" "02-" "1202038-" "1201505-[\"32909062963\"]"] 

Versuchten regulären Ausdruck zu verwenden, aber ich bin nicht das gewünschte Ergebnis zu bekommen.

+2

Zeigen Sie uns Ihre aktuellen Abfrage Versuch. Und fügen Sie einige weitere Beispieldaten und auch das erwartete Ergebnis hinzu - alles als formatierter Text. – jarlh

+0

Die Frage ist nicht so klar. [mcve] könnte nützlich sein, um deine Frage zu bearbeiten, sie zu klären und Hilfe zu bekommen. Wie es ist, ist es wirklich schwer zu verstehen, welche Logik Sie implementieren müssen. – Aleksej

+0

Die Daten sind wie folgt in der Spalte: – Pramoddt

Antwort

0

Hier ist eine Regexp, die tun könnte, was Sie wollen: '"13[0-9]{5}\-?'. Es stimmt überein mit sieben Ziffern, die mit 13 beginnen und mit einem optionalen nachgestellten Minuszeichen.

Dieses Beispiel trimmt die führende " für Reinlichkeit:

SQL> with dta as 
    2 (select '["1301800-" "02-" "1202038-" "1201505-[\"32909062963\"]"]' str 
    3  from dual) 
    4 select trim('"' from 
    5    regexp_substr(str, '"13[0-9]{5}\-?', 1, level) 
    6   ) as tkn 
    7 from dta 
    8 connect by level <= regexp_count(str, '"13[0-9]{5}\-?') 
    9/

TKN 
---------- 
1301800- 
02- 

SQL> 
Verwandte Themen