Skip to main content

Strip/Remove HTML from text in SQL Server

I used the below function, because HTML contents are not fully supported in crystal report.

Ref:
http://blog.sqlauthority.com/2007/06/16/sql-server-udf-user-defined-function-to-strip-html-parse-html-no-regular-expression/

http://lazycoders.blogspot.com/2007/06/stripping-html-from-text-in-sql-server.html


CREATE FUNCTION [dbo].[StripHTML]

(
@HTMLText varchar(MAX)
)
RETURNS varchar(MAX)
AS
BEGIN
DECLARE @Start int
DECLARE @End int
DECLARE @Length int
-- Replace the HTML entity & with the '&' character (this needs to be done first, as
-- '&' might be double encoded as '&')
SET @Start = CHARINDEX('&', @HTMLText)
SET @End = @Start + 4
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 = @Start + 4
SET @Length = (@End - @Start) + 1
END
-- Replace the HTML entity < with the '<' character
SET @Start = CHARINDEX('<', @HTMLText)
SET @End = @Start + 3
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 = @Start + 3
SET @Length = (@End - @Start) + 1
END
-- Replace the HTML entity > with the '>' character
SET @Start = CHARINDEX('>', @HTMLText)
SET @End = @Start + 3
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 = @Start + 3
SET @Length = (@End - @Start) + 1
END


-- Replace the HTML entity & with the '&' character
SET @Start = CHARINDEX('&', @HTMLText)
SET @End = @Start + 4
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 = @Start + 4
SET @Length = (@End - @Start) + 1
END


-- Replace the HTML entity   with the ' ' character
SET @Start = CHARINDEX(' ', @HTMLText)
SET @End = @Start + 5
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 = @Start + 5
SET @Length = (@End - @Start) + 1
END

-- Replace any
tags with a newline

SET @Start = CHARINDEX('
', @HTMLText)

SET @End = @Start + 3
SET @Length = (@End - @Start) + 1


WHILE (@Start > 0 AND @End > 0 AND @Length > 0) BEGIN
SET @HTMLText = STUFF(@HTMLText, @Start, @Length, CHAR(13) + CHAR(10))
SET @Start = CHARINDEX('
', @HTMLText)



SET @End = @Start + 3
SET @Length = (@End - @Start) + 1
END
-- Replace any
tags with a newline

SET @Start = CHARINDEX('
', @HTMLText)

SET @End = @Start + 4
SET @Length = (@End - @Start) + 1


WHILE (@Start > 0 AND @End > 0 AND @Length > 0) BEGIN
SET @HTMLText = STUFF(@HTMLText, @Start, @Length, 'CHAR(13) + CHAR(10)')
SET @Start = CHARINDEX('
', @HTMLText)

SET @End = @Start + 4
SET @Length = (@End - @Start) + 1
END
-- Replace any
tags with a newline

SET @Start = CHARINDEX('
', @HTMLText)

SET @End = @Start + 5
SET @Length = (@End - @Start) + 1
WHILE (@Start > 0 AND @End > 0 AND @Length > 0) BEGIN
SET @HTMLText = STUFF(@HTMLText, @Start, @Length, 'CHAR(13) + CHAR(10)')
SET @Start = CHARINDEX('
', @HTMLText)

SET @End = @Start + 5
SET @Length = (@End - @Start) + 1
END
-- Remove anything between tags
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
WHILE CHARINDEX(' ', @HTMLText) > 0
SET @HTMLText = REPLACE(@HTMLText, ' ', ' ')


RETURN LTRIM(RTRIM(@HTMLText))


END

Comments

Popular posts from this blog

ഗുരു ദേവോ ഭവ:

ഇ ന്ന് ദേശീയ അധ്യാപക ദിനം. അധ്യാപകനും രാഷ്ട്രപതിയുമായിരുന്ന ഡോ.എസ് രാധാകൃഷ്ണന്‍റെ പിറന്നാള്‍ ദിനമാണ് അധ്യാപക ദിനമായി നാം ആചരിക്കുന്നത്. ഈ ഒരു സുദിനത്തില്‍ ഈയൊരു അധ്യാപകനെ സ്മരിച്ചില്ലെങ്കില്‍ അതൊരു നന്ദികേടായി പോവും.  ഓര്‍മ്മക്കുറിപ്പിലേക്ക് കടക്കുന്നതിനു മുന്‍പൊരു ഡിസ്ക്ലെയിമര്‍. ബാദ്ധ്യതാ നിരാകരണം ഒടുക്കം മാത്രം നടത്തുന്നതാണ് ആചാരം. എങ്കിലും, അതു താനല്ലയോ ഇതെന്ന് ചുമ്മാ കല്‍പ്പിച്ചു കൂട്ടി എന്തിനുമേതിനും വ്രണപ്പെടുന്നൊരു സമൂഹത്തില്‍, അവകാശപരിത്യാഗം ആദ്യം തന്നെ നടത്തുകയെന്ന ആചാരലംഘനമാവും ഉചിതം. അതെ, ഇനി ഇവിടെ പറയാന്‍ പോവുന്നതൊരു മിത്ത് മാത്രമാണു. എന്ന്? എവിടെ? എത്രത്തോളം? നടന്നുവെന്നതിനൊന്നും ഇവിടെയൊരു പ്രസക്തിയില്ല. പതിറ്റാണ്ടുകളായി കേരളത്തിലെ പലപല കോളേജുകളും ഇതെന്‍റെ ഗര്‍ഭമാണെന്ന അവകാശവാദവുമായി എത്തിയിട്ടുണ്ടു. സത്യം ആര്‍ക്കറിയാം! ഒരു കാര്യം മാത്രം എനിക്കു തറപ്പിച്ചു പറയാം, എന്‍റെ ഗര്‍ഭം ഇങ്ങിനെയല്ല. അതുകൊണ്ടു തന്നെ ഈ കഥയിലെ കഥാപാത്രങ്ങളും കഥാപരിസരവും സാങ്കല്‍പ്പികം മാത്രമാണു, മറിച്ച് തോന്നുന്നെങ്കില്‍ അതു കയ്യിലിരിപ്പിന്‍റെ ഗുണം

മലയാളത്തില്‍ മൊത്തം എത്ര അക്ഷരങ്ങള്‍ ഉണ്ട്?

മലയാളത്തെ മറന്നവര്‍ക്കും മറന്നെന്നു നടിക്കുന്നവര്‍ക്കും ഒന്നോര്‍മ്മ പുതുക്കാന്‍ അക്ഷരമാലയെ രാജേഷ്‌ ഇവിടെ എടുത്തെഴുതുന്നു..... http://chayilyam.com/miscellaneous/personal/%E0%B4%A4%E0%B5%8B%E0%B4%A8%E0%B5%8D%E0%B4%A8%E0%B5%8D%E0%B4%AF%E0%B4%BE%E0%B4%95%E0%B5%8D%E0%B4%B7%E0%B4%B0%E0%B4%99%E0%B5%8D%E0%B4%99%E0%B4%B3%E0%B5%8D%E2%80%8D

Multiple CSS Classes on One Element/Control

You can apply multiple css styles on one element. For example, let's assume we have two css classes in the style sheet named "nrml" and "center" respectively .nrml { font-family: Arial, Verdana; font-size:10px;} .center { text-align: center;} You can apply both the above 2 styles to a div using the following syntax. <div class="nrml center" id="Layer2"> It will render with both classes applied in Internet Explorer 5.0+, Netscape 7+ and Opera 7. CSS 2.0 is really cool and there are lot of powerful unexplored areas