diskskin
Goto Top

Daten teilweise ersetzen mit dem Update-Befehl in MS SQL 2005

Hallo,

ich möchte in einem Datensatz einen Spalteneintrag teilweise abändern:

BNR(alt) = '158491251' soll in 155491251 umgewandelt werden,
also jeweils die "158" mit der "155" ersetzen mittels eines Update-Befehls
unter Microsoft SQL Server 2005.

Kann mit jemand helfen?
Vielen Dank.

Content-ID: 90041

Url: https://administrator.de/forum/daten-teilweise-ersetzen-mit-dem-update-befehl-in-ms-sql-2005-90041.html

Ausgedruckt am: 21.02.2025 um 18:02 Uhr

regen2k
regen2k 17.06.2008 um 13:37:41 Uhr
Goto Top
Hallo,

UPDATE [tableName]
set [columnName] = REPLACE( [columnName] , '158', '155') where [columnName] like '158%'

unter der Annahme, dass die 158 immer am Anfang stehen.
32067
32067 17.06.2008 um 14:33:40 Uhr
Goto Top
Kleines Problem: Aus 158158158 wird hiermit 155155155, weil Replace alle Vorkommnisse ersetzt, was aber nach meinem Verständnis nicht gewünscht wird.

Ich würde eher was in der Art CONCAT('155', RIGHT([columnName], LEN([columnName])-3)) oder so da sehen (extrem ins unsaubere getippt).
Biber
Biber 17.06.2008 um 14:35:36 Uhr
Goto Top
Moin regen2k,

das is' sich aber gefährlich...
wenn die Zeichenfolge '158' mehrmals auftaucht im Gesamtstring..

Besser so:
UPDATE [tableName]
set [columnName] = '155' +   
SUBSTRING( [columnName], 4, Len( [columnname] ) -3 )
where LEFT([columnName], 3) = '158';  

Grüße
Biber
[Edit] @regen2k
Nun aber nicht den Kopf hängen lässen... besser wir haben den kleinen Denkfehler hier im Forum als in einer produktiven Datenbank...
Imagine: Montags früh halb neun... irgendwo in Deutschland...
"Update successfully. 456.332.129.211 rows affected." face-wink
[/Edit]
diskskin
diskskin 17.06.2008 um 14:42:48 Uhr
Goto Top
Erstmal danke an alle...hat geklappt!

Viele Grüße
ds
regen2k
regen2k 17.06.2008 um 14:47:53 Uhr
Goto Top
Ja, da habt ihr natürlich recht. Habe ich nicht drangedacht face-sad