【问题标题】:Need Regex expression for SQL object namesSQL 对象名称需要正则表达式
【发布时间】:2012-01-11 17:20:16
【问题描述】:

我有很多带有 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 - 创建

  • 表 test_table - 删除

  • proc dbo.test - 改变

【问题讨论】:

    标签: sql regex


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      要解析任意 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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-11
        • 2019-08-09
        • 2010-09-21
        相关资源
        最近更新 更多