如何使用SQL从文本中删除链接

如何使用SQL从文本中删除链接,sql,sql-server,sql-server-2005,Sql,Sql Server,Sql Server 2005,我需要通过删除表中的链接来清理数据库。对于这样的列条目: Thank you for the important information<br /><a href="http://www.cnn.com">Read More Here</a><br /> This is great. Thank you for the important information<br /><br /> This is great.

我需要通过删除表中的链接来清理数据库。对于这样的列条目:

Thank you for the important information<br /><a href="http://www.cnn.com">Read More Here</a><br />  This is great.
Thank you for the important information<br /><br />  This is great.
感谢您提供的重要信息

这太好了。
我需要删除整个链接,因此它将以如下方式结束:

Thank you for the important information<br /><a href="http://www.cnn.com">Read More Here</a><br />  This is great.
Thank you for the important information<br /><br />  This is great.
感谢您提供的重要信息

这太好了。
有没有一种方法可以通过一个UPDATE语句来实现这一点?
另外,有没有一种方法可以从链接中删除HTML语义,同时将内容保留在文本中?

如果所有链接都以非常一致的方式完成,那么只需使用正则表达式替换即可

'\<a href.*?\</a\>' 

“\只需找到hrefj的开始和结束,并将其替换为单个空格即可

declare @StringToFix varchar(500)
set @StringToFix = 'Thank you for the important information<br /><a href="http://www.cnn.com">Read More'

select REPLACE(
        @stringtofix
        , Substring(@StringToFix
            , CHARINDEX('<a href=', @StringToFix) -- Starting Point
                           -- End Point - Starting Point with 4 more spaces
            , CHARINDEX('</a>', @StringToFix) 
                              - CHARINDEX('<a href=', @StringToFix) +4            )
        , ' '
    ) as ResultField
declare@StringToFix varchar(500)
set@StringToFix='感谢您提供的重要信息
阅读更多信息' 选择替换( @stringtofix ,子字符串(@StringToFix
,CHARINDEX(“我想共享我的sql脚本,该脚本从文本中删除ahref标记,但保留锚文本

源文本:

Visit <a href="http://google.com/">Google</a>, then <a href="http://bing.com">Bing</a>
MS SQL代码:

declare @str nvarchar(max) = 'Visit <a href="http://google.com/">Google</a>, then <a href="http://bing.com">Bing</a>'

declare @aStart int = charindex('<a ', @str)
declare @aStartTagEnd int = charindex('>', @str, @aStart)

DECLARE @result nvarchar(max) = @str;

set @result = replace(@result, '</a>', '')

select @result

WHILE (@aStart > 0 and @aStartTagEnd > 0)
BEGIN

    declare @rep1 nvarchar(max) = substring(@result, @aStart, @aStartTagEnd + 1 - @aStart)

    set @result = replace(@result, @rep1, '')

    set @aStart = charindex('<a ', @result)
    set @aStartTagEnd = charindex('>', @result, @aStart)

END 

select @result
declare@str nvarchar(max)='访问,然后'
声明@aStart int=charindex(“”,@str,@aStart)
声明@result nvarchar(max)=@str;
设置@result=replace(@result,,“”)
选择@result
而(@aStart>0和@aStartTagEnd>0)
开始
声明@rep1 nvarchar(max)=子字符串(@result、@aStart、@aStartTagEnd+1-@aStart)
设置@result=replace(@result,@rep1,,)
设置@aStart=charindex(“”,@result,@aStart)
结束
选择@result

@Joe SQL Server 2005-添加到标记中,thx。文本是否可以有多个链接?它必须有多可靠?下面这样的简单算法是否可以接受?最多读取“”,重复到字符串末尾。(我不知道SQL Server中有任何工具可以直接解析HTML并去掉特定部分。)为什么不用几行php代码来处理它?(获取数据,以您想要的方式转换数据并更新这些记录)SQL Server没有REGEXP_REPLACE.Works完美。谢谢!