文本与正则表达式替换在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杂志文章。