können Sie
- PATINDEX verwenden den Start der URL zu finden,
- CHARINDEX den Schlusskurs und
- STUFF zu finden, um den Inhalt zu ersetzen.
Code:
UPDATE myTable
SET content = STUFF(content,
PATINDEX('%http://example.com%"%', content),
CHARINDEX('"', content, PATINDEX('%http://example.com%"%', content)) - PATINDEX('%http://example.com%"%', content),
'http://new-example.com')
WHERE PATINDEX('%http://example.com%"%', content) > 0;
Vollarbeitsbeispiel mit Testdaten:
CREATE TABLE #test (content nvarchar(max));
INSERT INTO #test VALUES ('Visit our <a href="http://example.com/about-us">About Us Page</a> to learn more.');
INSERT INTO #test VALUES ('Read our <a href="http://example.com/terms">Terms</a> by clicking here.');
INSERT INTO #test VALUES ('Some other text');
UPDATE #test
SET content = STUFF(content,
PATINDEX('%http://example.com%"%', content),
CHARINDEX('"', content, PATINDEX('%http://example.com%"%', content)) - PATINDEX('%http://example.com%"%', content),
'http://new-example.com')
WHERE PATINDEX('%http://example.com%"%', content) > 0;
SELECT * FROM #test;
DROP TABLE #test;
Eingang:
Visit our <a href="http://example.com/about-us">About Us Page</a> to learn more.
Read our <a href="http://example.com/terms">Terms</a> by clicking here.
Some other text
Ausgang:
Visit our <a href="http://new-example.com">About Us Page</a> to learn more.
Read our <a href="http://new-example.com">Terms</a> by clicking here.
Some other text
Verbesserungsvorschlag:
- Wenn es Sie stört, dass die gleiche PATINDEX Ausdruck viermal wiederholt (es würde mich stören), wickeln Sie es in einem WAK und den CTE in der UPDATE-Anweisung beizutreten.
Was ist der Datentyp und die Länge der CONTENT-Spalte? –
Wenn es varchar (max) oder nvarchar (max) war, verwenden Sie Aktualisieren mit.WRITE (Ausdruck, @ Offset, @ Länge) –