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

How to remove -- comments in SQL Server 2016 sys.sql_modules definition

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

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

但是,定义中还包含注释语句

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

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

此解决方案假设 'CREATE TRIGGER' 是您要开始查找的位置的标志。只是为了展示它在做什么,它正在寻找 'CREATE TRIGGER' 首先出现的位置,然后抓取从该位置到最后的所有代码:

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%'

如您所料,如果 'CREATE TRIGGER' 短语出现在描述或评论中,这将被阻止。