我有HTML內容如下數據:SQL Server的正則表達式清潔標籤
outer text <span class="cssname">inner text to be removed along with tags</span> further text
我想刪除所有特定標籤與內部文本<span with class='cssname'
一起,在查詢中使用正則表達式。
預期的輸出我喜歡的是:
'outer text further text'
我有HTML內容如下數據:SQL Server的正則表達式清潔標籤
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
我希望有人寫代碼4我。 – SteveFest
在插入檢索之前,使用HTML解析器在數據庫之外進行更好。 –
感謝您的回覆。但我希望在SQL db級別執行此操作,而不是在使用html解析器的代碼一側執行此操作。任何人都可以幫助與此查詢SQL查詢。 –