删除SQL中字段的一部分

时间:2015-10-20 14:18:42

标签: sql sql-server

我正在寻找一个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>','')

但现在意识到“替换”不能使用通配符。

1 个答案:

答案 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)

<强>更新

我已经使用解决方案更新了我的答案,只修改那些具有此模式的记录。