只包括jquery-1.4.2.js事實上,T-SQL本身不支持正則表達式,這是正則表達式成爲選擇工具的問題。首先,我會說解決方案中的複雜程度很大程度上取決於數據的一致性。例如,假設我們搜索項目,標題:
Select ..
From ...
Where HtmlContent Like '<span class="heading-2">%'
這是假設結束括號前最後一個雙引號後,沒有額外的間距span
和class
之間沒有額外的間距以及。我們可以編寫'%<span%class="heading-2"%>%'
來計算空格,但是也會在與任何span標記相同的內容中找到標記爲heading-2
的div
標記。如果後面的情況不應該發生,但您可能有不同的空間,則使用此修訂後的模式。我們真正遇到麻煩的地方是結束標籤。假設我們的內容看起來像這樣:
<span class="heading-2"> Foo <span class="heading-3">Bar</span> And Gamma Too</span> .... <span class="heading-4">Fubar Is the right way!</span>...
它不是那麼簡單,找到正確的收盤span
標籤更改爲</h2>
。您不能簡單地找到第一個</span>
並將其更改爲</h2>
。如果你知道你有沒有嵌套span
標籤,那麼你可以寫一個用戶定義函數,將做到這一點:
Create Function ReplaceSpanToH2(@HtmlContent nvarchar(max))
Returns nvarchar(max)
As
Begin
Declare @StartPos int
Declare @EndBracket int
Set @StartPos = CharIndex('<span class="heading-2">', @HtmlContent)
If @StartPos = 0
Return @HtmlContent
Set @HtmlContent = Replace(@HtmlContent, '<span class="heading-2">', '<h2>')
-- find next </span>
Set @StartPos = CharIndex('</span>', @HtmlContent, @StartPos)
Set @HtmlContent = Stuff(@HtmlContent, @StartPos, 7, '</h2>')
Return @HtmlContent
End
這可能是因爲純粹的T-SQL沒有對正則表達式的任何支持和普遍薄弱在字符串操作方面......這就是爲什麼有SQL-CLR! – 2010-04-12 16:40:17
Whew,請不要使用TSQL進行此操作:) – jvenema 2010-04-12 19:17:37
@timmerk - 只需確認一下,這是一次性更新的特定模式的標籤,只有極少或沒有例外情況?如果有人錯過了,它會成爲世界的終點,還是僅僅是進入並手動糾正的工作? – Thomas 2010-04-12 20:03:30