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
Zooking
quelle

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>')
kristof
quelle
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.

Mufaka
quelle
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.


quelle
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!

Westley
quelle
0

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

Manu
quelle
-1

Aktualisieren Sie die Datenbank und setzen Sie fieldName = Replace (fieldName, 'FindString', 'ReplaceString').

Vijay Balkrishna konduskar
quelle