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-Key: 90041

Url: https://administrator.de/contentid/90041

Printed on: April 16, 2024 at 11:04 o'clock

Member: regen2k
regen2k Jun 17, 2008 at 11:37:41 (UTC)
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.
Mitglied: 32067
32067 Jun 17, 2008 at 12:33:40 (UTC)
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).
Member: Biber
Biber Jun 17, 2008 at 12:35:36 (UTC)
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]
Member: diskskin
diskskin Jun 17, 2008 at 12:42:48 (UTC)
Goto Top
Erstmal danke an alle...hat geklappt!

Viele Grüße
ds
Member: regen2k
regen2k Jun 17, 2008 at 12:47:53 (UTC)
Goto Top
Ja, da habt ihr natürlich recht. Habe ich nicht drangedacht face-sad