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.