Suchen und ersetzen Sie einen Teil der Zeichenfolge in der Datenbank


68

Ich muss alle iframe-Tags ersetzen, die als nvarchar in meiner Datenbank gespeichert sind. Ich kann die Einträge mit der folgenden SQL-Frage finden:

SELECT * FROM databasename..VersionedFields WHERE Value LIKE '%<iframe%'

Angenommen, ich möchte das folgende Codesegment ersetzen:

code before iframe <iframe src="yadayada"> </iframe> code after iframe

Mit diesem:

code before iframe <a>iframe src="yadayada"</a> code after iframe

Antworten:


86

Ich denke, 2 Update-Aufrufe sollten reichen

update VersionedFields
set Value = replace(value,'<iframe','<a><iframe')

update VersionedFields
set Value = replace(value,'> </iframe>','</a>')

99

Sie können dies mit einer UPDATE-Anweisung tun, die den Wert mit REPLACE festlegt

UPDATE
    Table
SET
    Column = Replace(Column, 'find value', 'replacement value')
WHERE
    xxx

Sie sollten dabei äußerst vorsichtig sein! Ich empfehle dringend, zuerst ein Backup zu erstellen.


Hier gibt es mehr Infos dazu
Giacomo Tecya Pigani

13
update VersionedFields
set Value = replace(replace(value,'<iframe','<a>iframe'), '> </iframe>','</a>')

und du machst es in einem einzigen Durchgang.


4

Ich war gerade mit einem ähnlichen Problem konfrontiert. Ich exportierte den Inhalt der Datenbank in eine SQL-Datei und verwendete TextEdit, um alles zu finden und zu ersetzen, was ich brauchte. Einfachheit ftw!


0

Ich würde in Betracht ziehen, eine CLR-Ersetzungsfunktion mit RegEx-Unterstützung für diese Art der Zeichenfolgenmanipulation zu schreiben.


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.