【发布时间】:2018-08-29 16:11:00
【问题描述】:
我正在使用 SQL Server 2008 R2,但我正在通过 SQL Server 2012 Management Studio 访问该服务器。
我有一个名为Search 的表,其中有一列Body 类型为(nvarchar(Max), not null)。
此列中的数据实际上是电子邮件的正文,此列将所有 HTML 标记作为文本的一部分。
例如,电子邮件正文将显示:
Good morning
This invoice has been assigned.
但是当它存储在名为Body 的列中时,它看起来像这样:
[size=14.0pt]Good morning
[/size][size=14.0pt]This invoice has been assigned.[/size]
我有以下 SQL 来删除“[”和“]”之间的所有内容(包括括号):
SELECT
*,
CASE
WHEN CHARINDEX('[', Body) > 0 AND CHARINDEX(']', Body) > 0
AND CHARINDEX('[', Body) < CHARINDEX(']', Body)
THEN STUFF(Body, CHARINDEX('[', Body), (CHARINDEX(']', Body) - CHARINDEX('[', Body)) + 1, '')
ELSE Body
END AS Body1
FROM search
但这只是删除了第一组标签,现在看起来像这样:
Good morning
[/size][size=14.0pt]This invoice has been assigned.[/size]
您能帮我处理一下我的 SQL,以便将它们全部删除,看起来像这样:
Good Morning
This invoice has been assigned.
【问题讨论】:
-
您使用什么风格的 SQL?例如MYSQL、MS SQL 等?
-
我正在使用 MS SQL Server 2008 R2,但我正在通过 SQL Server Management Studio 2012 访问该服务器。抱歉,我应该将其包含在我的原始帖子中。
-
但这不是有效的 HTML。如果它是实际的 HTML,我们可以使用一些技巧。由于情况似乎并非如此,我建议使用 CLR 和正则表达式。
标签: sql sql-server tsql sql-server-2008-r2