Shunze 學園 >電腦資訊學系 >資料庫管理 > 《分享》自定函數刪除HTML Tag 哈囉,還沒有註冊或者登入。請你[註冊|登入]
« 上一篇主題 下一篇主題 » 顯示成列印模式 | 增加到我的最愛
發表新主題 發表回覆
作者
主題
shunze
工友伯伯


註冊日期: 2002 04
來自: 潮汐終止之地
文章: 2340

shunze 離線
《分享》自定函數刪除HTML Tag引用回覆 編輯/刪除文章 搜尋由  發表的其他文章 回報給版主 IP 位置 回此頁最上方

在公司遇到了一個需求,
把知識庫堛漯壅悀憟騥蚰X,並且要刪除HTML Tag!

刪除HTML Tag並不在SQL內建的function中,
透過網路找到了以下的自定義function可去除HTML Tag。

CREATE FUNCTION [dbo].[fn_StripHtmlTags]
(
    @HTMLText NVARCHAR(MAX)
)
RETURNS NVARCHAR(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


於DB中透過新增查詢,建立了此自定義函數。


自定義的函數可在DB中的可程式性→函數→純量值函數塈鋮魽C


自定義函數建立後,就可以在SQL媢B用此函數了。
SELECT dbo.fn_StripHtmlTags(K1.Content)
FROM t_knowledges AS K1
WHERE T1.FKnowledgeCatalogID=100


這樣輸出的內容堙AHTML Tag就被移除了∼



♥順子老婆的網拍,請多關照∼

If you don't like something, change it.
If you can't change it, change your attitude.
Don't complain!




2012-11-08, 18:36 shunze 的個人資料 把 shunze 加入好友列表 發送Email給 shunze 瀏覽 shunze 的網站 MSN : shunze@gmail.com
shunze
工友伯伯


註冊日期: 2002 04
來自: 潮汐終止之地
文章: 2340

shunze 離線
引用回覆 編輯/刪除文章 搜尋由  發表的其他文章 回報給版主 IP 位置 回此頁最上方

雖然成功去除了HTML Tag <、>,但空白字元&nbsp;卻還是殘留著該怎麼辦?

就用SQL本身的函數replace來完成吧!

透過

replace(string, '&nbsp;', '')

就可以把&nbsp;以空字串取代掉~

如上例,可修改為如下
SELECT replace(dbo.fn_StripHtmlTags(K1.Content),'&nbsp;','')
FROM t_knowledges AS K1
WHERE T1.FKnowledgeCatalogID=100



♥順子老婆的網拍,請多關照∼

If you don't like something, change it.
If you can't change it, change your attitude.
Don't complain!




2012-11-30, 17:02 shunze 的個人資料 把 shunze 加入好友列表 發送Email給 shunze 瀏覽 shunze 的網站 MSN : shunze@gmail.com
  « 上一篇主題 下一篇主題 »
發表新主題 發表回覆
跳到:

Powered by: Burning Board 1.1.1 2001 WoltLab GbR