2017-01-15 2 views
-1

Ich habe ein Feld, das in diesem Format ist:Entfernen Zeichenfolge vor Komma in SQL Developer

value 1, description 

Was ich versuche, nur die Beschreibung Teil zu tun, ist diese Spalte durch keep zu aktualisieren und entfernen Sie den Wert 1 .

Beispiel von dem, was ich in meinem Bereich habe:

1st district, Rockville 
6th district, Gaithersburg/Montgomery Village 

Was ich nach dem Update haben will:

Rockville 
Gaithersburg/Montgomery Village 

Jetzt benutze ich das, aber es gibt mir den ersten Teil statt Sekunde:

SELECT 
    (CASE WHEN INSTR(field, ',') > 0 
     THEN substr(field, 1, instr(field, ',') +1) 
     ELSE myfield 
    END) AS myfield 
FROM 
    mydata 
+0

Was passiert, wenn mehr als ein Komma im Feld ist? – GurV

Antwort

0

Verwenden Sie die Position von comma als Startposition substr Funktion anstelle von Teilzeichenlänge

SELECT 
    (CASE WHEN INSTR(field, ',') > 0 
     THEN substr(field, instr(field, ',') +1) 
     ELSE myfield 
    END) AS myfield 
FROM 
    mydata 

Wie bereits erwähnt in Kommentaren kann es vereinfacht werden zu

SELECT substr(field, instr(field, ',') +1) AS myfield 
FROM mydata 

Um zu aktualisieren

update mydata Set field = substr(field, instr(field, ',') +1) 
Where instr(field, ',') > 1 
+0

Fall ist nicht erforderlich. als Instr wird 0 zurückgeben, wenn ',' nicht vorhanden ist – GurV

+0

Die Auswahl funktioniert gut, wie kann ich den Update-Befehl machen? – CodeL

+0

@CodeL - aktualisiert meinen Beitrag –

0

Ich denke, Sie können regexp_substr hier verwenden. Etwas wie:

substr(regexp_substr(field, ',[^,]+'),2) 
0

Wenn Sie wollen immer das Teil nach dem letzten Komma zu bekommen, können Sie dies tun:

Mit SUBSTR + INSTR:

select 
    trim(substr(field,instr(field,',',-1)+1)) 
from mydata; 

Mit REGEXP_SUBSTR:

select 
    trim(regexp_substr(field,'[^,]+$')) 
from mydata; 

TRIM wird verwendet, um Redundanzen zu entfernen t Führender oder nachkommender Leerraum in der Zeichenfolge.

Verwandte Themen