我正在寻找一个SQL查询,它会删除部分字段,而其余的信息保持不变。
我想改变:
Any text <div style="display:none">HACKED CODE WITH DIFFERENT URLS</div> and any text.
要:
Any text and any text.
我试过了:
update TABLENAME
set COLUMN = replace(COLUMN,'<div%div>','')
但现在意识到“替换”不能使用通配符。
答案 0 :(得分:1)
我认为这对你有用。您只需要一个更复杂的条件来根据您找到的模式过滤/删除数据。
UPDATE TableName
SET COLUMN = LEFT(COLUMN, CHARINDEX('<', COLUMN)-1) +
RIGHT(COLUMN, LEN(COLUMN)-CHARINDEX('</div>', COLUMN)-6)
WHERE CHARINDEX('</div>', COLUMN) > 0
以下是一个示例SQLFiddle,其中包含代码如何处理您在上面提供的示例文本。
或者,如果SQLFiddle不起作用,这里是代码:
DECLARE @var NVARCHAR(max)
SET @var = 'Any text <div style="display:none">HACKED CODE WITH DIFFERENT URLS</div> and any text.'
SELECT
LEFT(@var, CHARINDEX('<', @var) - 1) +
RIGHT(@var, LEN(@var) - CHARINDEX('</div>', @var) - 6)
<强>更新强>
我已经使用解决方案更新了我的答案,只修改那些具有此模式的记录。