2017-02-05 3 views
1

Ich mag die IP-Adressen holen, die aus den untenen MusternWie grep die Zeichenfolge mit Sonderzeichen als Trennzeichen in Oracle?

SQL> select distinct cell_name from v$cell_state; 

CELL_NAME 
-------------------------------------------------------------------------------- 
10.160.0.39;10.160.0.40 
10.160.0.41;10.160.0.42 
10.160.0.43;10.160.0.44 
10.160.0.45;10.160.0.46 
10.160.0.47;10.160.0.48 
10.160.0.49;10.160.0.50 
10.160.0.51;10.160.0.52 

expected output: 
10.160.0.39 
10.160.0.41 
10.160.0.43 
10.160.0.45 
10.160.0.47 
10.160.0.49 
10.160.0.51 

SQL> select distinct cell_name from v$cell_state; 

CELL_NAME 
-------------------------------------------------------------------------------- 
10.160.0.39,10.160.0.40 
10.160.0.41,10.160.0.42 
10.160.0.43,10.160.0.44 
10.160.0.45,10.160.0.46 
10.160.0.47,10.160.0.48 
10.160.0.49,10.160.0.50 
10.160.0.51,10.160.0.52 

expected output: 
10.160.0.39 
10.160.0.41 
10.160.0.43 
10.160.0.45 
10.160.0.47 
10.160.0.49 
10.160.0.51 

SQL> select distinct cell_name from v$cell_state; 

CELL_NAME 
-------------------------------------------------------------------------------- 
190.160.14.3 
190.160.14.4 
190.160.14.5 
190.160.14.8 
190.160.14.9 

expected output: 
190.160.14.3 
190.160.14.4 
190.160.14.5 
190.160.14.8 
190.160.14.9 

ich vor dem ersten Sonderzeichen enden will eine Abfrage schreiben, es zu erreichen, die IP-Adressen in allen oben holt 3 Szenario ist Auch wenn es keine spezielle ist Zeichen, dann sollte es den bestehenden IP-Ausgang

Antwort

1

[^;, ] jeder Charter andere als ;, , und
* eine beliebige Anzahl von Vorkommen

holen
select distinct 
     regexp_substr(cell_name,'[^;, ]*') 

from v$cell_state 
; 

Demo

select regexp_substr('10.160.0.39;10.160.0.40' ,'[^;, ]*') 
     ,regexp_substr('10.160.0.39,10.160.0.40' ,'[^;, ]*') 
     ,regexp_substr('10.160.0.39'    ,'[^;, ]*') 

from dual 
; 
+0

Hallo Dudu, super.Could Sie bitte wenig erklären, wie es selbst abruft, wenn es keine spezielle Zeichen ist –

+0

ok es bekam * ist der Schlüssel –

+0

wenn ich Raum hinzufügen möchten auch ein spezielle char dann, wie man das in spezielle char-Liste? –

Verwandte Themen