基本的に、コードにエラーがあり、エントリが 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