Sql-Server
是否有可能有一個雙引號視圖或過程的腳本
我顯然無法弄清楚Google搜尋我想要的關鍵詞,所以我需要幫助找出如何做到這一點。我覺得這可能是重複的,但我在其他任何地方都找不到。
我希望能夠輕鬆地將一堆創建表/視圖/proc 腳本保存到文件中。該文件具有易於執行的格式,可以刪除然後重新創建所有對象,因此它可以在多個數據庫上執行。
這種格式對我很有效,因為我必須在開發過程中對某些對象進行更改,然後在多個其他數據庫上進行相同的更改。我可以更改數據庫並點擊執行。
但是,有些腳本中有很多引號,每次我對文件進行更改或添加新對象時,都必須雙引號/四引號引用它們,這很煩人。例如…
IF NOT EXISTS (SELECT * FROM sys.views WHERE NAME = 'MF1' AND schema_id = (SELECT schema_id FROM sys.schemas WHERE NAME = 'CFConversion')) BEGIN EXEC('CREATE VIEW [CFConversion].[MF1] AS ... ... ... CROSS APPLY ( VALUES (''T'', ''FIT', FIT, '''') ,(''T'', ''SIT', SIT, '''') ,(''T'', ''FUTA', FUTA, '''') ,(''T'', ''Employee_SUI'', EMPLOYEE_SUI, '''') ,(''T'', ''Employee_SDI'', EMPLOYEE_SDI, '''') ... ... ...
交叉應用中有大量的值,它只是變得煩人。如何輕鬆導出對象的定義以具有雙引號/四引號?
在 SSMS 中,您可以在工具/選項/SQL Server 對象資源管理器/腳本/對像腳本選項中選中“檢查對像是否存在”選項。
然後,當您從對象資源管理器中為 CREATE 編寫腳本時,SSMS 會將對象編寫為 sp_executesql 語句,完全雙引號。
如果這對其他人有幫助,使用雙單引號來表示字元串中的單引號的另一種方法是
CHAR(39)
. 這句話很難理解,舉個例子:
'Don''t'
可以使用這種方法表示為
'Don' + CHAR(39) + 't'
雖然這對於快速字元串可能看起來不那麼漂亮,但它可以解決大塊 DSQL 的問題。為了進一步清理它,我還建議您使用變數屏蔽特殊字元,例如:
DECLARE @tick CHAR(1) = CHAR(39) SELECT 'Don' + @tick + 't code with DSQL'
在我想要保持清潔的腳本中,我經常使用製表
CHAR(9)
符和換行符 (crlf) 字元來使用這種方法CHAR(13) + CHAR(10)