Вы должны написать свою собственную функцию, чтобы сделать это. Но вы можете начать с приведенного ниже примера, взятого из этого популярного блоггера по SQL Server . Вам придется изменить его, чтобы он игнорировал теги в вашем «разрешенном» списке, поскольку, как и сейчас, он уничтожает все что угодно в тегах <<'>>.
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
Нет необходимости говорить, что чем больше тегов вы допустите, тем сложнее будет tsql. Я предполагаю, что существуют сторонние инструменты, которые лучше справляются с java, c # или любым другим языком, поддерживаемым вашей текущей платформой приложений, что, вероятно, было бы гораздо лучшим способом.