簡體   English   中英

SQL Server正則表達式清除標記

[英]SQL Server regular expressions clean tags

我在數據中有以下HTML內容:

outer text <span class="cssname">inner text to be removed along with tags</span> further text

我想在查詢中使用正則表達式刪除所有特定標簽以及內部文本<span with class='cssname'

我喜歡的預期輸出是:

'outer text further text'

SQL Server不像其他語言那樣完全支持正則表達式。 這將適用於單個標簽。

declare @var nvarchar(256) = N'outer text <span class="cssname">inner text to be removed along with tags</span> further text'

select 
    stuff(@var,charindex('<',@var),charindex('>',@var,charindex('</',@var)) - charindex('<',@var) + 1,'')

通過這種方式,可以調整HTML以從常規文本創建<content>元素,並將結果轉換為XML。 這是在“ CROSS APPLY部分完成的。

第二步使用XQuery查詢<content>元素中的文本(從而除去<span>元素)。


DECLARE @tt TABLE(t NVARCHAR(MAX));
INSERT INTO @tt(t)VALUES(N'outer text <span class="cssname">inner text to be removed along with tags</span> further text');

SELECT
    stripped=CAST(x.query('for $i in (/content) return $i/text()') AS NVARCHAR(MAX))
FROM
    @tt
    CROSS APPLY (
        SELECT
            x=CAST('<content>'+REPLACE(REPLACE(t,'<span','</content><span'),'/span>','/span><content>')+'</content>' AS XML)
    ) AS f

結果:

outer text  further text

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM