SQL replace-Anweisung mit Variablen
Ich würde gerne einige Ratschläge, wie man mit dem SQL replace-Anweisung zu bereinigen, Daten mit neuen Worten, die in zwei Spalten in separate Tabelle.
Ich versuche, mit dynamic SQL und Variablen zu erzeugen, die replace-Anweisung wie folgt:
DECLARE @ReplacementText VARCHAR(max) = 'SELECT UnwantedData FROM Table'
DECLARE @sql VARCHAR(8000) = 'SELECT '
SELECT
@sql = @sql +
' @ReplacementText = replace(@ReplacementText, ''' + OldWord + ''', ' + NewWord + ')'
+ ' ,'
FROM ReplacementWords
PRINT @sql
EXEC(@sql)
Dies ist ein Beispiel, was ich bekomme:
@ReplacementText = replace(@ReplacementText, ' "Saiko Maru"', SAIKO-MARU).
plus die Fehlermeldung:
Erklären muß, die Skalare variable "@ReplacementText"
Dankbar für irgendwelche Tipps, wie das zu korrigieren, was ich mache, oder einen besseren Weg zu gehen über diese.
- Also, Sie haben
DECLARE @ReplacementText VARCHAR(max) = 'SELECT UnwantedData FROM Table'
und dann, das Sie ersetzen möchten etwas in diese variable? Was ist der Zweck der Abfrage?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie entfernen den
@
im block@sql + @ReplacementText = replace(
und statt der@ReplacementText
in der dynamischen Abfrage, die Sie benötigen, um Sie als Variablen Wert alsreplace(''' + @ReplacementText + ''',
Die Arbeits-Abfrage:
Wie ich es verstehe Sie brauchen, um zu reinigen, einige Worte aus
SELECT UnwantedData FROM Table
diesem Teil.Auf diesem Teil erhalten Sie Abfrage:
IN
@sql
variable, dann ausführen mit Parameter:Ausgabe:
Ich gebe im folgenden ein Beispiel, wie dies zu tun.
Beachten Sie, dass für die illustration, die ich hatte zu erstellen #favouriteFoodQuotes wie eine temporäre Tabelle, sonst wird die dynamische sql wird nicht ausgeführt. Aber in Ihrem Fall ist dies kein problem, wie Sie passieren in dem Wert eine permanente Tabelle. Auch habe ich eine Tabelle angelegt variable, um alte und neue Wörter, aber wieder, ich nehme an, diese dauerhaft sein wird.