598 Stimmen

UPDATE und ERSETZEN eines Teils eines Strings

Ich habe eine Tabelle mit zwei Spalten, ID und Wert. Ich möchte einen Teil einiger Zeichenfolgen in der zweiten Spalte ändern.

Beispiel einer Tabelle:

ID            Wert
---------------------------------
1             c:\temp\123\abc\111
2             c:\temp\123\abc\222
3             c:\temp\123\abc\333
4             c:\temp\123\abc\444

Jetzt wird das 123\ in der Wert-Zeichenfolge nicht benötigt. Ich habe es mit UPDATE und REPLACE versucht:

UPDATE dbo.xxx
SET Wert = REPLACE(Wert, '%123%', '')
WHERE ID <= 4

Wenn ich das Skript in SQL Server ausführe, wird kein Fehler gemeldet, aber es wird auch nichts aktualisiert. Warum ist das so?

938voto

Jon Egerton Punkte 38465

Sie benötigen keine Platzhalter im REPLACE - es findet einfach den String, den Sie für das zweite Argument eingeben, daher sollte Folgendes funktionieren:

UPDATE dbo.xxx
SET Value = REPLACE(Value, '123', '')
WHERE ID <=4

Wenn die zu ersetzende Spalte vom Typ text oder ntext ist, müssen Sie sie in nvarchar umwandeln

UPDATE dbo.xxx
SET Value = REPLACE(CAST(Value as nVarchar(4000)), '123', '')
WHERE ID <=4

78voto

Robert Punkte 25247

Versuchen Sie, % Zeichen wie unten entfernen

UPDATE dbo.xxx
SET Wert = ERSETZEN(Wert, '123', '')
WHERE ID <=4

67voto

xinux Punkte 927

Um die Abfrage in großen Tabellen, in denen nicht jede Zeile aktualisiert werden muss, schneller auszuführen, können Sie auch wählen, nur die Zeilen zu aktualisieren, die geändert werden:

UPDATE dbo.xxx
SET Value = REPLACE(Value, '123', '')
WHERE ID <= 4
AND Value LIKE '%123%'

57voto

maneesh Punkte 579

Abfrage:

UPDATE tabellenname 
SET feldname = REPLACE(feldname , 'alterString', 'neuerString') 
WHERE feldname LIKE ('alterString%');

10voto

RASKOLNIKOV Punkte 692

Sie haben eine Tabelle, in der Sie einen Datumcode haben, der sieben Zeichen lang ist, etwas wie

"32-1000"

Jetzt möchten Sie alle

"32-"

ersetzen durch

"14-"

Die SQL-Abfrage, die Sie ausführen müssen, lautet

Update Products Set Code = replace(Code, '32-', '14-') Where ...(Setzen Sie hier Ihre "where" -Anweisung ein)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X