文本与正则表达式替换在SQL Server

问题描述:

目前,我有有一个随文本与正则表达式替换在SQL Server

<span class="escape_<<digits>>"></span> 

,在图案上存在差异是在类名的<<digits>>唯一开头的文本nvarchar(max)类型的SQL服务器列。

共同部分是

<span class="myclass_ 

和闭合

</span> 

某些样值是

<span class="myclass_12"></span> 
<span class="myclass_234"></span> 
<span class="myclass_4546"></span> 

这些跨度文本只存在在列的开头。中间的任何这种匹配范围都不应该被删除或匹配。

什么是SQL Server查询与正则表达式来消除所有这些发生跨度?

如果你有一个像

<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默认不支持正则表达式匹配。如果您需要并希望通过各种方式匹配正则表达式,请考虑创建一个在SQL Server中实现该功能的SQL-CLR程序集。

SQL Server不支持开箱即用的正则表达式。

如果您使用SQL Server 2005或更高版本,则可以为SQL Server编写CLR函数并调用该函数。

请参阅this关于如何做到这一点的细节(SQL Server 2005>正则表达式使模式匹配和数据提取更容易)的MSDN杂志文章。