需要SQL对象名称的Regex表达式

时间:2011-10-26 13:35:00

标签: sql regex

我有很多带有DDL和DML语句的SQL脚本。

我想隔离并提取修改/创建/删除的SQL对象。 我是一个剧本:

  create proc [dbo].test
  as
     print 1
  go

  drop table test_table
  go

  alter procedure dbo.test
  as
     print 2

我必须创建/更改/删除SQL对象,例如: G。如下:

  • proc dbo.test - create

  • table test_table - drop

  • proc dbo.test - alter

2 个答案:

答案 0 :(得分:0)

我不确定你会在哪里使用正则表达式但是试试这个:

/(create)(.*)|(drop)(.*)|(alter)(.*)/

答案 1 :(得分:0)

要解析任意sql server存储过程,使用SQL解析器会更好。尝试用正则表达式解析任意SQL将相当于编写自己的解析器。

在完整SQL Parser的帮助下,来自this page的演示生成了这样的结果,这正是您所需要的:

sstMssqlCreateProcedure(proc: [dbo].test - create)
sstMssqlPrint
sstMssqlGo
sstMssqlDropTabletable: test_table - drop
sstMssqlGo
sstMssqlAlterProcedure(proc: dbo.test - alter)
sstMssqlPrint