Ich muss die Daten in datatable.column aktualisieren / ersetzen. Die Tabelle hat ein Feld mit dem Namen Content
. Ich benutze die REPLACE
Funktion. Da der Spaltendatentyp lautet NTEXT
, kann ich die REPLACE
Funktion in SQL Server nicht verwenden .
Ich kann den Datentyp nicht ändern, da es sich bei dieser Datenbank um eine Softwaretabelle eines Drittanbieters handelt. Das Ändern des Datentyps führt zum Fehlschlagen der Anwendung.
UPDATE [CMS_DB_test].[dbo].[cms_HtmlText]
SET Content = REPLACE(Content,'ABC','DEF')
WHERE Content LIKE '%ABC%'
Ich erhalte diesen Fehler:
Meldung 8116, Ebene 16, Status 1, Zeile 1 Der Argumentdatentyp ntext ist für Argument 1 der Ersetzungsfunktion ungültig.
- Kann ich das mit T-SQL beheben? Hat jemand ein Beispiel zum Lesen und Schleifen?
- Da es sich um eine einmalige Konvertierung handelt, kann ich möglicherweise zu einem anderen Typ wechseln, aber ich befürchte, dass ich die Daten durcheinander bringe.
Es gibt ein Primärschlüsselfeld: Name: ID - Ganzzahl - es ist eine Identität ... Also muss ich auch darüber nachdenken. Setzen Sie die Identität möglicherweise vorübergehend auf N.
Bitte geben Sie an, wie Sie die REPLACE-Funktion erreichen können.
Ca. 3000 Anweisungen müssen mit einer neuen Lösung aktualisiert werden.
quelle
Antworten:
WENN Ihre Daten nicht über 4000 Zeichen hinausgehen UND Sie sich in SQL Server 2000 oder einer Kompatibilitätsstufe von 8 oder SQL Server 2000 befinden:
Für SQL Server 2005+:
quelle
NText
wirklich notwendig? Ich würde denken, dass das ZuweisenNVarchar(MAX)
zuNText
es automatisch besetzen würde.Unter der Annahme von SQL Server 2000 sollte die folgende StackOverflow-Frage Ihr Problem lösen.
Wenn Sie SQL Server 2005/2008 verwenden, können Sie den folgenden Code verwenden (von hier übernommen ):
quelle