2016-09-16 80 views
0

我在sys.sql_modules上運行select語句,以獲取CREATE TRIGGER語句的所有定義。如何刪除SQL Server 2016中的註釋sys.sql_modules定義

我想使用定義在別處運行。

然而,該定義也包含註釋語句

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

我可以使用嵌套REPLACE()語句,但是有太多的變種。 如何擺脫評論?

回答

1

該解決方案使用「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'這個短語。