Die ersten 2 stellen in einer Spalte ändern
Hallo,
Ich würde gerne auf unserem SQL Server in einer Tabelle eine Spalte ändern wie folgt. Es sollen nur die ersten 2 Stellen geändert werden.
160004854654 soll nach her 100004854654 sein
Wie kann ich das anstellen?
Update Tabelle set spalte = left(spalte,2,Len(spalte)10) where spalte1 ='16'
Danke schonmal für eure Hilfe.
Crashi09
Ich würde gerne auf unserem SQL Server in einer Tabelle eine Spalte ändern wie folgt. Es sollen nur die ersten 2 Stellen geändert werden.
160004854654 soll nach her 100004854654 sein
Wie kann ich das anstellen?
Update Tabelle set spalte = left(spalte,2,Len(spalte)10) where spalte1 ='16'
Danke schonmal für eure Hilfe.
Crashi09
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 294140
Url: https://administrator.de/contentid/294140
Ausgedruckt am: 22.11.2024 um 20:11 Uhr
20 Kommentare
Neuester Kommentar
Der Wert 101600021568 entspricht nicht deinem Eingangs genannten Beispielwert 160004854654. Sollen alle 16er Werte durch 10er ersetzt werden, egal wo im String? Oder sind das eventuell immer 2er Blöcke und es dürfte z.B. bei 0160000000 nicht getauscht werden?
PS: Es sollten laut dir nur die ersten 2 Stellen geänmdert werden.
PS: Es sollten laut dir nur die ersten 2 Stellen geänmdert werden.
Moin crashi09,
ähhm... wie schonend sollen wir vorgehen, wenn wir den String "101600021568" in ein NVarchar(10)-Feld pressen?
Ohne sanftes Drücken wird das nicht gehen....
Bist du sicher, dass die Feldtypen sorgfältig und adäquat ausgewählt wurden?
Das Feld scheint doch gar nicht "variabel", geschweige denn sprachabhängig zu sein, oder habe ich wieder meine üblichen Montachs-Wahrnehmungsprobleme?
Grüße
Biber
ähhm... wie schonend sollen wir vorgehen, wenn wir den String "101600021568" in ein NVarchar(10)-Feld pressen?
Ohne sanftes Drücken wird das nicht gehen....
Bist du sicher, dass die Feldtypen sorgfältig und adäquat ausgewählt wurden?
Das Feld scheint doch gar nicht "variabel", geschweige denn sprachabhängig zu sein, oder habe ich wieder meine üblichen Montachs-Wahrnehmungsprobleme?
Grüße
Biber
Moin crashi,
wenn ich es denn richtig verstehe...dann:
P.S. Hatte weiter oben eine Nachfrage gestellt.
Grüße
Biber
[Edit] Korrigiert auf Anforderung "die '16' auf Stelle 3+4 löschen[/Edit]
Zitat von @crashi09:
kann die die zwei zeichen (16) ab der dritten Stelle -4 Stelle löschen dan würde es passen.
kann die die zwei zeichen (16) ab der dritten Stelle -4 Stelle löschen dan würde es passen.
wenn ich es denn richtig verstehe...dann:
UPDATE tabelle
SET spalte = concat (
replace(Substring(spalte, 1, 2), '16', 10')
, replace(Substring(spalte, 3, 2), '16' ,'')
, replace(rtrim(substring(spalte, 5, 255)),'16', '10' )
);
P.S. Hatte weiter oben eine Nachfrage gestellt.
Grüße
Biber
[Edit] Korrigiert auf Anforderung "die '16' auf Stelle 3+4 löschen[/Edit]
Moin crashi09,
na ja, dann hat sich das mit der Feldlänge ja teilweise geklärt... rein physisch passt also ein String der Länge 12 (oder gar 50) da rein.
Habe ich das denn jetzt richtig verstanden, dass du
Bitte versuche noch mal die Anforderung ggf. mit einem kleinen Beispiel zu skizzieren.
Mir ist es nach 3x Hin- und Her nicht ganz klar.
Grüße
Biber
na ja, dann hat sich das mit der Feldlänge ja teilweise geklärt... rein physisch passt also ein String der Länge 12 (oder gar 50) da rein.
Habe ich das denn jetzt richtig verstanden, dass du
- aus dem bisherigen String der Länge 12 einen String der Länge 10 machen willst?
- wobei alle Feldinhalte bisher linksbündig erfasst wurden und alle Strings heute auch 12 Stellen lang sind?
- falls die Ziffern auf Pos. 3+4 gleich '16' sind, dann solle diese 2 Ziffern gelöscht werden?
- und/oder, wie ukulele-7 es verstanden hat: sollen alle Vorkommnisse '16' im String durch '10' ersetzt werden?
- oder gilt es auch/zusätzlich für die Pos 1+2, also die ersten beiden Zeichen im String, dass '16' durch '10' ersetzt werden sollen?
Bitte versuche noch mal die Anforderung ggf. mit einem kleinen Beispiel zu skizzieren.
Mir ist es nach 3x Hin- und Her nicht ganz klar.
Grüße
Biber
PS: Hier die Erklärung:
http://blogs.lessthandot.com/index.php/datamgmt/dbprogramming/the-diffe ...
Sry ich hab in letzter Zeit nur mit VARCHAR() gearbeitet und setze da fast nur noch datalength() ein um Längen zu bestimmen.
http://blogs.lessthandot.com/index.php/datamgmt/dbprogramming/the-diffe ...
Sry ich hab in letzter Zeit nur mit VARCHAR() gearbeitet und setze da fast nur noch datalength() ein um Längen zu bestimmen.