2

我正在尝试解析一种包含创建函数和存储过程等命令的大型 SQL 脚本。每当我找到一条GO语句时,我都想将文件拆分为字符串(我想使用普通的 ado.net 而不是 SMO 来执行它)。

问题是到目前为止我还没有找到合适的正则表达式。使用简单的\bGO\b忽略大小写会拆分它。但也会在评论中拆分所有 go(s)

/*****************************\
sql statement 1
GO
sql statement 2
GO
\****************************/

我的要求是:即使脚本包含 GO 语句,如果脚本处于注释中,也不要拆分脚本。假设我的整个脚本如下:

sql statement 1
GO
/*****************************\
sql statement 2
GO
sql statement 3
GO
\****************************/
sql statement 4

预期输出应该像

First command :
sql statement 1

Second command :

/*****************************\
sql statement 2
GO
sql statement 3
GO
\****************************/
sql statement 4

对此有任何想法吗?

提前致谢。:)

4

1 回答 1

0

您可以删除所有评论,然后按以下方式拆分GO

/\/\**\\[^\\]*?\\\**\//    # match the comment

\/\**\\    # matches /*****\
[^\\]*?    # any text within the comments
\\\**\/    # matches \*****/

删除上面的发现并将结果拆分为GO.

于 2013-07-11T07:17:06.327 回答