【SQL Server】清除HTML的SQL用户定义函数--不使用正则表达式
分类:数据库| 发布:camnprbubuol| 查看: | 发表时间:2010/9/30
如何在数据库中过滤掉html标签,而不使用正则表达式呢?问题的本质就是删除<和>之间的字符,只留下有效的字符.
下面的用户定义函数输入html字符,返回过滤结果的字符.注意在传入前请使用两个单引号,替换一个单引号.(不是用双引号替换单引号).
- CREATE FUNCTION [dbo].[udf_StripHTML]
- (@HTMLText VARCHAR(MAX))
- RETURNS VARCHAR(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
- GO
测试:
SELECT dbo.udf_StripHTML(’<b>UDF at **.com </b><br><br><a href=http://www.**.com>www.**.com</a>’)
结果: