我有一个来自MySQL的sql转储文件,用于创建SQL Server(2005)表格。
我需要将大于varchar(8000)的列声明(sql server 2005的最大值)更改为varchar(max)。
我使用Visual Basic脚本来解析转储文件并进行这些更改。它只是将整个文件视为一个字符串。如果数字大于8000,我只想改变,但我不知道怎么做。有没有办法检查声明中的数字是什么并更改它?我做了一个正则表达式来查找声明中的数字。但我不知道如何说:
对于与varchar(int> 8000)匹配的所有字符串,请更改为varchar(max)。
答案 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