SQL Server の文字列から HTML タグを削除するにはどうすればよいでしょうか? 質問する

SQL Server の文字列から HTML タグを削除するにはどうすればよいでしょうか? 質問する

SQL Server 2005 に HTML タグを含むデータがあり、それをすべて削除して、タグ間のテキストだけを残したいと思っています。理想的には、などの項目も など&lt;に置き換えます。<

これを行う簡単な方法はありますか? または、すでにサンプルの T-SQL コードを持っている人はいますか?

拡張ストアド プロシージャなどを追加する機能がないため、純粋な T-SQL アプローチ (できれば SQL 2000 と下位互換性のあるもの) を希望します。

私はデータを更新するのではなく、削除された HTML でデータを取得するだけなので、再利用しやすいようにユーザー定義関数として記述するのが理想的です。

たとえば、これを変換すると次のようになります。

<B>Some useful text</B>&nbsp;
<A onclick="return openInfo(this)"
   href="http://there.com/3ce984e88d0531bac5349"
   target=globalhelp>
   <IMG title="Source Description" height=15 alt="Source Description" 
        src="/ri/new_info.gif" width=15 align=top border=0>
</A>&gt;&nbsp;<b>more text</b></TD></TR>

これに:

Some useful text > more text

ベストアンサー1

ここで説明するように、それを実行する UDF があります。

HTML を削除するユーザー定義関数

CREATE FUNCTION [dbo].[udf_StripHTML] (@HTMLText VARCHAR(MAX))
RETURNS VARCHAR(MAX) AS
BEGIN
    DECLARE @Start INT
    DECLARE @End INT
    DECLARE @Length INT
    SET @Start = CHARINDEX('<',@HTMLText)
    SET @End = CHARINDEX('>',@HTMLText,CHARINDEX('<',@HTMLText))
    SET @Length = (@End - @Start) + 1
    WHILE @Start > 0 AND @End > 0 AND @Length > 0
    BEGIN
        SET @HTMLText = STUFF(@HTMLText,@Start,@Length,'')
        SET @Start = CHARINDEX('<',@HTMLText)
        SET @End = CHARINDEX('>',@HTMLText,CHARINDEX('<',@HTMLText))
        SET @Length = (@End - @Start) + 1
    END
    RETURN LTRIM(RTRIM(@HTMLText))
END
GO

編集: これは SQL Server 2005 用ですが、キーワード MAX を 4000 などに変更すると、SQL Server 2000 でも機能します。

おすすめ記事