Oracle - Update-Zeichenfolge zu ersetzen, nur das Letzte Zeichen
Ich habe folgenden string in einer Oracle 9i-Datenbank:
A,B,C,
Brauche ich, um zu ersetzen Sie alle Instanzen von ',' Wann ist es das Letzte Element in der Zeichenfolge. Ich habe mit der folgenden Anweisung aber es löscht alles, was im Bereich nicht nur das Komma. Irgendwelche Vorschläge?
UPDATE table SET column = REPLACE(SUBSTR(column, -1, 1), ',', '');
Danke!!! Der Kommentar
Sie sind immer null-die Funktion
Ausgezeichnete danke! Wäre eine ähnliche Funktion funktioniert, wenn ich versucht habe, zu entfernen ',' das war das erste Zeichen in einem string? (A,B,C)
das "danke" war nicht für Sie - ich fing die "wo-Frage" und Quassnoi fing die "ersetzen" - Ding (und Sie verändert Ihre Antwort, nachdem Sie es gesehen!). Bitte nicht, Kredit nehmen, die nicht zu dir gehören!
das wäre eigentlich sogar "einfacher" Ursache, die Sie tun können:
UPDATE mytable SET column = SUBSTR(column, 1, LENGTH(column) - 1) WHERE SUBSTR(column, -1, 1) = ','
für mich gearbeitet. Die andere noch ausgeblendet, die gesamte Zeile anstelle nur der Letzte ','.Sie sind immer null-die Funktion
REPLACE
gibt null zurück, - schauen Sie meine aktualisierte AntwortAusgezeichnete danke! Wäre eine ähnliche Funktion funktioniert, wenn ich versucht habe, zu entfernen ',' das war das erste Zeichen in einem string? (A,B,C)
das "danke" war nicht für Sie - ich fing die "wo-Frage" und Quassnoi fing die "ersetzen" - Ding (und Sie verändert Ihre Antwort, nachdem Sie es gesehen!). Bitte nicht, Kredit nehmen, die nicht zu dir gehören!
das wäre eigentlich sogar "einfacher" Ursache, die Sie tun können:
UPDATE table SET column = SUBSTR(column, 2) WHERE SUBSTR(column, 1, 1) = ',';
InformationsquelleAutor PhelpsK | 2013-09-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie vergessen, die Bedingung hinzuzufügen:
WHERE SUBSTR(column, -1, 1) = ','
Quassnoi fing wieder ein Problem - ERSETZEN Sie gibt null zurück, - Sie können nicht verwenden es im "set"
Full sql:
Dies wird sicherstellen, dass Sie tun, die Ersatz nur in Zeilen mit Werten, die endet mit ","
WHERE column LIKE '%,'
InformationsquelleAutor alfasin
rtrim(column, ',')
effizienter und auch viel kürzersind Sie gestört, mehr mit Antwort, Kürze oder utility? Beide sind überlegen, imho. )
InformationsquelleAutor Vadzim
InformationsquelleAutor Quassnoi
Wenn Sie wollen, finden 'Spalte' nur 1-mal in Ihrer Abfrage nur Folgendes machen:
UPDATE table SET column = REVERSE(SUBSTR(REVERSE(column), 2));
InformationsquelleAutor fse