2016-12-01 1 views
0

Ich versuche, die folgende Zeichenfolge in SQL aufzuspalten:Split-String-Test = "tets" von regulären Ausdruck

select regexp_substr('version="100104" name="Contracts Ref." desc="" type="picker" bp_name="Contracts"','[^" ]+', 1, level) 
from dual 
connect by regexp_substr('version="100104" name="Contracts Ref." desc="" type="picker" bp_name="Contracts"','[^" ]+', 1, level) is not null; 

aber es ist Splitting durch Raum. Ich brauche eine Rückkehr wie version="100104 name="Contracts Ref." kann mir jemand führen?

Antwort

0

Ich glaube, Sie so etwas wie dieses brauchen:

select regexp_substr('version="100104" name="Contracts Ref." desc="" type="picker" bp_name="Contracts"','(\w+=\"[^\"]*\")', 1, level) 
from dual 
connect by regexp_substr('version="100104" name="Contracts Ref." desc="" type="picker" bp_name="Contracts"','(\w+=\"[^\"]*\")', 1, level) is not null; 

Im neuen RegexMuster (\w+=\"[^\"]*\") -

\w+=\" Findet 1 oder mehr Vorkommen eines Buchstaben oder einer Zahl, gefolgt von =“

[^\"] Findet alles nach dem ersten Zitat, das nicht ein Zitat selbst ist

\" Endlich bekommen wir das letzte Zitat.

+0

danke, das ist was ich versucht habe zu erreichen, vielen dank für die Erklärung –