使用T-SQL替换MS SQL中的长字符串中的某些模式

时间:2009-07-17 23:07:50

标签: sql-server regex tsql

我的MS SQL数据库中有一个表,它在字段中有一些不完整的数据。该字段是varchar字段,字段中包含大约1000个字符。该字符串由正斜杠格式的单词分段组成,后跟段,然后以正斜杠结束(即/ p /)。这些段中的每一个将由空格分隔。问题是这些分段中的某些分段没有最后的正斜杠(即/ p)。我需要编写一个可以解决这个问题的T-SQL脚本。

我知道我需要使用更新语句来做到这一点。我也得到了where子句。但是我遇到的问题是我将它设置为等于什么。由于字符串有大约1000个字符,我不想输入实际的字符串,只是纠正有问题的分段。我的问题是,是否有一个“RegEx替换功能”只会改变有问题的分段并留下其余的字符串?

非常感谢您的帮助。

提前致谢, 蒙

3 个答案:

答案 0 :(得分:1)

SQL不支持其中的RegEx。您可以编写SQL CLR函数,然后通过它管道数据,如果数据有问题,则将更正的版本返回给SQL。

UPDATE YourTable
    Set YourColumn = dbo.YourClrProc(YourColumn)

答案 1 :(得分:1)

如果安装了Windows Scripting Host(大多数机器都安装了),那么您可以使用this method从T-SQL调用VBScript.RegExp对象。

答案 2 :(得分:1)

REPLACE,但与RegEx没什么关系。

如果这是一次性操作,那么您可以考虑导出表,使用您熟悉的工具(如sed或grep),然后将修改后的数据导回。它可能比在T-SQL中尝试这样做更快更正确。

另一方面,如果是计划维护操作,您需要经常重复作为维护数据的方式,那么我同意mrdenny,CLR功能可能是最好的选择。