SQL Datenbankinhalt beschneiden

eRacoon

Rear Admiral
Registriert
Aug. 2007
Beiträge
5.711
Hi,
ich habe eine MYSQL-Datenbank mit ca 15000 Zeilen.

In einer Spalte stehen zwei Zahlen die irgendwann mal zusammengefasst wurden.
Das sieht dann so aus:

1234_5678 (Zahl1_Zahl2)

Jetzt möchte ich ein Update auf die Datenbank machen, sodass nur noch Zahl2 in dem Feld steht... Also wie im Beispiel die "5678" der Rest "1234_" kann gelöscht werden.

Ist dies irgendwie möglich?
Es stehen keine Hilfsmittel wie phpMyAdmin oder Sonstiges zur Verfügung, nur die Konsolenoberfläche...

Danke für jede Hilfe oder Idee!
 
Muste dir zusammenbauen über die INSTR(spalte, Suchstring) Function. Damit kannst du dann nach dem '_' suchen und alles rechts davon RIGHT (spalte, länge) ausschneiden. Länge = Gesamte Stringe länge - teilstringlänge.

Das machste dann einfach als Update auf deine Tabelle. Fertig.
 
Leider ist MYSQL absolut nicht mein Gebiet, ich kann mir zwar mit Hilfe von Google so einiges Zusammenbauen aber bei der Aufgabe hier wirds dann doch zu schwer...
Deswegen wäre ein kompletter Befehl eine rießen Hilfe :)
 
1. zeichen '_' suchen
2. links abschrieben
3. das ergebnis in ein update der tabelle verpacken

grundsätzlich: wenn du nciht weißt, was du tust, solltest du datentransformation an wichtigen datn unbedingt vermeiden. sichere zudem zuerst die tabelle
 
Zuletzt bearbeitet:
Ja ich habe mir natürlich einen Dump erstellt und Teste damit herum, ich habe zwar nicht die großen Kenntnisse in MYSQL aber ich weis was ich tue...

Bis jetzt habe ich auch alle Änderungen hinbekommen aber bei der Zeichenabschneidung hängts gerade :(
 
Digital_D99 schrieb:
SELECT SUBSTRING(SPALTEN_NAME,INSTR(SPALTEN_NAME, '_'))
bzw.
update TABELLEN_NAME set SPALTEN_NAME = SUBSTRING(SPALTEN_NAME,INSTR(SPALTEN_NAME, '_'))

Ah fast Perfekt, allerdings bleibt der "_" vor der Zahl stehen, bekommt man den noch weg?

Aber schonmal Vielen Dank! :)

Ja SQL mag vllt eine leichte Sprache sein aber als Fachinformatiker der Systemintigration habe ich wenig damit zu tun und habe keine Zeit mich für die Sache hier stundenlang damit zu beschäftigen^^

Edit: Auch gerne mit einem zweiten Befehl...
 
Ah habe es soeben gelöst:

Select RIGHT(Spalten_Name, 4) from Tabellenname;

Danke für die Denkanstöße! :)
 
so gehts nur bei konstanter breite, ansonsten wie oben beschrieben verfahren...
 
Zahlen sind immer jeweils 4stellig, daher ist dies ausreichend für mein Anwendungsfall :)
 
Zurück
Oben