首页 > 解决方案 > 将 CAST 存储到 SQL 中的变量

问题描述

SQL 中的列具有图像格式的数据。我使用了 CAST,数据以文本形式输出,这一切都很棒。问题是该列有 HTML 标签。我正在尝试从已转换的列中删除 HTML 标记。

我创建了一个函数来删除 HTML 标记,但现在我需要在该转换列上调用该函数。

/* 将图像转换为文本 */

SELECT cast(cast(note as varbinary(max)) as varchar (max)) note
FROM NOTES

/ 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
       [Col1]
      ,[Col2]
      ,[Col3]
      ,[Col4]
      ,dbo.udf_StripHTML(cast(cast(note as varbinary(max)) as varchar (max)) note)
  FROM NOTES

如何使用演员表调用 HTML 函数?

标签: sqlsql-serverselectcastingset

解决方案


我认为这只是一个语法错误。这应该有效:

SELECT
       [Col1]
      ,[Col2]
      ,[Col3]
      ,[Col4]
      ,[Note] = dbo.udf_StripHTML(cast(cast([note] as varbinary(max)) as varchar (max)))
FROM NOTES

推荐阅读