我正在sys.sql_modules
上运行一个select语句,以获取我的CREATE TRIGGER语句的所有定义。
我想使用这些定义在其他地方运行。
但是,该定义还包含注释声明
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,> -- =============================================
CREATE TRIGGER
我可以使用嵌套的REPLACE()语句,但是有太多的变体。 我如何摆脱评论?
答案 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%'
正如你可以猜到的那样,如果短语“创造触发器”,这将会成为障碍。出现在说明或评论中。