Sql 撇号位置

Sql 撇号位置,sql,Sql,我知道我的代码有一些不必要的部分,但我的主要问题与撇号的位置有关 DECLARE @cc1 VARCHAR(MAX) SET cc1 = ' SELECT STRING_AGG(CAST( N' UPDATE [db].[dbo].[Main_table] WITH (TABLOCK) SET ' AS nvarchar(MAX)) +QUOTENAME(COLUMN_NAME,'['']') +N' = NULL WHERE ' +QUOTENAME(COLUMN_NAME,'[''

我知道我的代码有一些不必要的部分,但我的主要问题与撇号的位置有关

DECLARE
@cc1 VARCHAR(MAX)

SET cc1 = 

'
SELECT
STRING_AGG(CAST( N' UPDATE [db].[dbo].[Main_table] WITH (TABLOCK) SET ' AS nvarchar(MAX)) 
+QUOTENAME(COLUMN_NAME,'['']')  +N' = NULL WHERE '
+QUOTENAME(COLUMN_NAME,'['']') ,+N' = '''''
) 
FROM INFORMATION_SCHEMA.COLUMNS
'

PRINT(cc1) 

我几乎什么都试过了,但总是出错,我不知道应该在哪里调整代码。

所以。。。怎么了?直接
SET cc1=
应该是
SET@cc1=
Msg 102,级别15,状态1,第8行靠近'AS nvarchar(MAX))+QUOTENAME(列名称')的语法不正确。Msg 128,级别15,状态1,第15行在此上下文中不允许使用名称“cc1”。有效表达式是常量、常量表达式和(在某些上下文中)变量。不允许使用列名。猜测您应该执行
select@cc1=string\u agg…
尝试但未成功:\n感谢您的帮助,我做了一个小调查,知道我理解自己的错误。再次感谢!
DECLARE @cc1 NVARCHAR(MAX)

select @cc1 = STRING_AGG(CAST( N' UPDATE [db].[dbo].[Main_table] WITH (TABLOCK) SET ' AS nvarchar(MAX)) 
    + QuoteName(COLUMN_NAME,'['']')  + N' = NULL WHERE '
    + QuoteName(COLUMN_NAME,'['']') ,+ N' = '''';'
) 
FROM INFORMATION_SCHEMA.COLUMNS

PRINT(@cc1)