基本上我在我的代码中有一个错误,导致条目保存到数据库中的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
不过,我想这样做没有,因为我只使用这个曾经创造一个功能,而DBA不希望我把任何东西在数据库。我怎么能在UDF之外工作?我不太熟悉SQL。
我的代码:
Update [OrderItem]
set [Description] = --??? Description without the HTML
from [Order] o inner join [OrderItem] oi on o.OrderID = oi.OrderID
一串丑陋的Replace()括号剥去了最常见的标记吗?即'替换(替换(替换([描述],'',''),'
',''),'','') – PowerUser
^您仍然在使用一个功能:D –
@DanyKhalife ,是的,但它不是存储在数据库中的UDF。这是重要的事情。 – PowerUser