将所有varchar列声明替换为大于8000的大小

时间:2012-10-29 21:52:28

标签: mysql sql-server regex vb.net parsing

我有一个来自MySQL的sql转储文件,用于创建SQL Server(2005)表格。

我需要将大于varchar(8000)的列声明(sql server 2005的最大值)更改为varchar(max)。

我使用Visual Basic脚本来解析转储文件并进行这些更改。它只是将整个文件视为一个字符串。如果数字大于8000,我只想改变,但我不知道怎么做。有没有办法检查声明中的数字是什么并更改它?我做了一个正则表达式来查找声明中的数字。但我不知道如何说:

对于与varchar(int> 8000)匹配的所有字符串,请更改为varchar(max)。

1 个答案:

答案 0 :(得分:1)

正则表达式匹配大于(或等于)8000的数字:/^([89]\d{3}|\d{5,})$/

其中/是正则表达式的分隔符,其后是start(^),后跟((...|...))8或9和3位数([89]\d{3} )或五个或更多数字(\d{5,}),后跟字符串末尾($)和正则表达式分隔符(/)。

要在你的上下文中使用,这样的事情应该这样做......

/varchar\(\s*([89]\d{3}|\d{5,})\s*\)/

已撤消大括号\(...\)和可选空格\s*以及您的关键字varchar