如何删除 - SQL Server 2016 sys.sql_modules定义中的注释

时间:2016-09-16 08:28:45

标签: sql-server-2016

我正在sys.sql_modules上运行一个select语句,以获取我的CREATE TRIGGER语句的所有定义。

我想使用这些定义在其他地方运行。

但是,该定义还包含注释声明

-- =============================================
  -- Author:        <Author,,Name>  
-- Create date: <Create Date,,> 
 -- Description:   <Description,,>  -- ============================================= 
 CREATE TRIGGER

我可以使用嵌套的REPLACE()语句,但是有太多的变体。 我如何摆脱评论?

1 个答案:

答案 0 :(得分:1)

此解决方案使用的假设是“创建触发器”#39;是你想要开始寻找的标志。只是为了展示它正在做什么,它正在寻找创造触发的地方&#39;首先出现,然后抓取从该位置到结尾的所有代码:

SELECT CHARINDEX('create trigger', DEFINITION, 0) AS start_of_create_trigger
    , DEFINITION AS untrimmed_definition
    , RIGHT(DEFINITION, LEN(DEFINITION) - CHARINDEX('create trigger', DEFINITION, 0) + 1) AS trimmed_definition
FROM sys.sql_modules
WHERE DEFINITION LIKE '%create trigger%'

正如你可以猜到的那样,如果短语“创造触发器”,这将会成为障碍。出现在说明或评论中。