目前我有一个类型为nvarchar(max)
的SQL服务器列,其文本以
<span class="escape_<<digits>>"></span>
模式中唯一不同的是类名中的<<digits>>
。
常见的部分是
<span class="myclass_
和结束
</span>
一些样本值
<span class="myclass_12"></span>
<span class="myclass_234"></span>
<span class="myclass_4546"></span>
这些范围文本仅出现在列的开头。不应删除或匹配中间的任何此类匹配范围。
使用正则表达式进行SQL Server查询是为了删除所有这些span的出现?
答案 0 :(得分:4)
SQL Server不支持开箱即用的正则表达式。
如果您使用的是SQL Server 2005或更高版本,则可以为SQL Server编写CLR函数并调用它。
有关如何执行此操作的详细信息,请参阅this MSDN杂志文章(SQL Server 2005&gt;正则表达式使模式匹配和数据提取更容易)。
答案 1 :(得分:4)
如果你有像
这样的值<span class="myclass_12"></span>
<span class="myclass_234"></span>
<span class="myclass_4546"></span>
并且您希望从中获取myclass_12
等值,请使用此查询:
SELECT
REPLACE(REPLACE(string, '<span class="', ''), '"></span>', '')
FROM
dbo.YourTable
它不是基于正则表达式,因为默认情况下SQL Server / Transact-SQL不支持正则表达式匹配。如果您需要并希望通过各种方式进行Regex匹配,请考虑创建一个在SQL Server中实现该功能的SQL-CLR程序集。