2010-06-02 82 views
1

目前,我有有一個隨文本與正則表達式替換在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查詢與正則表達式來消除所有這些發生跨度?

回答

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默認不支持正則表達式匹配。如果您需要並希望通過各種方式匹配正則表達式,請考慮創建一個在SQL Server中實現該功能的SQL-CLR程序集。

4

SQL Server不支持開箱即用的正則表達式。

如果您使用SQL Server 2005或更高版本,則可以爲SQL Server編寫CLR函數並調用該函數。

請參閱this關於如何做到這一點的細節(SQL Server 2005>正則表達式使模式匹配和數據提取更容易)的MSDN雜誌文章。