3

これらの 2 つの文字の間およびこれらの 2 つの文字を含むすべての文字を置換または削除したい < > これらはフィールド全体で何度も発生し、行ごとにさまざまな状況で発生します

置き換えられる文字列はhtmlだと思うので、例を投稿しようとすると、サイトはそれをフォーマットとして登録しました。

置換を使用して、改行の html などの一般的な文字列をすべて削除しましたが、16 進数の色の値を使用してフィールドごとに異なるものもあります。

ありがとう!

4

4 に答える 4

4
DECLARE @foo TABLE(TAGS VARCHAR(MAX));
INSERT @foo VALUES('<fname>John</fname><lname>Dewey</lname>');

SELECT 1; --This will initialize @@ROWCOUNT if necessary. Might be optional depending on your query
WHILE @@ROWCOUNT > 0 BEGIN
    UPDATE @foo
    SET TAGS = STUFF(TAGS,CHARINDEX('<',TAGS),CHARINDEX('>',TAGS) - CHARINDEX('<',TAGS) + 1,'')
    WHERE TAGS LIKE '%<%>%'
END
SELECT * FROM @foo;

結果

------------------------
JohnDewey
于 2012-06-22T02:56:38.423 に答える
2
CREATE TABLE #html(Value NVARCHAR(MAX))
INSERT INTO #html(Value) VALUES('<ShouldBeRemoved>1 <Remove>abc<also remove>def<Take this out>ghi')
INSERT INTO #html(Value) VALUES('<ShouldBeRemoved>2 <Remove>abc<also remove>def<Take this out>ghi')
INSERT INTO #html(Value) VALUES('<ShouldBeRemoved>3 <Remove>abc<also remove>def<Take this out>ghi')

;with Cte(Value) AS (
    SELECT Value FROM #html
    UNION ALL
    SELECT REPLACE(Value, SUBSTRING(Value, CHARINDEX('<', Value), CHARINDEX('>', Value) - CHARINDEX('<', Value) + 1),'')
    FROM Cte
    WHERE CHARINDEX('<', Value) != 0
)
SELECT Value FROM Cte
WHERE CHARINDEX('<', Value) = 0
OPTION (MAXRECURSION 0);

DROP TABLE #html
于 2012-06-22T02:35:59.303 に答える