2011-10-12 8 views
2

テーブルからリンクを削除してデータベースを整理する必要があります。したがって、このような列エントリのために:SQLでテキストからリンクを削除する方法

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\>' 

で置き換える使用できるよりも、すべてのリンクが非常に一貫性のある方法で行われている場合

+0

バージョンは何? – Joe

+0

@Joe SQL Server 2005 - タグに追加されました。 – AngryHacker

+0

テキストに複数のリンクがありますか? –

答えて

0

私は、SQL Serverインスタンスが手元にありませんが、Oracleの問合せは次のようになります。ただ、hrefjの開始と終了を見つけて、単一のスペースと交換しよう

update table 
set col1 = REGEXP_REPLACE(col1,'\<a href.*?\</a\>', '', 1, 0, 'in'); 
+1

SQL Serverにはこれがありますか? – JeffO

+0

SQL ServerにREGEXP_REPLACEはありません。 –

1

を。

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 
0

テキストからahrefタグを削除してアンカーテキストを残すSQLスクリプトを共有します。

ソース・テキスト:

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

結果テキスト:

Visit Google, then Bing 

MS SQLコード: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