只包括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