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)