当我想更改表格的列名时,以下查询正常运作
EXEC sp_rename '[Table].[NAME]', 'FullName', 'COLUMN'
但是,当我想使用varibale做它时,它无效
declare @var nvarchar(max)=''
select @var=@var+'Exec sp_rename '[Table].[NAME]',
'FullName','Column';' from NewTable
exec(@var)
但如果我使用双引号,则查询正常运行
declare @var nvarchar(max)=''
select @var=@var+'Exec sp_rename ''[Table].[NAME]'',''FullName'',''Column'';' from NewTable
exec(@var)
为什么有必要使用' '这里吗?
答案 0 :(得分:1)
这不是双引号。第二个是有效的,因为你有第二个正确的内联查询,你正在为你的查询正确地转义冒号。
declare @var nvarchar(max)=''
select @var=@var+'Exec sp_rename ''[Table].[NAME]'',
''FullName'',''Column'';' from NewTable
exec(@var)
请注意,''
与"
不同,单引号通过加倍来转义
要在您的查询中使用单引号将'Full Name'
作为字符串,您必须使用''
''Full Name''
来对其进行搜索。现在,在您的查询中,它将被视为'full name'
而不是full name
。
如果您不使用单引号将其转义,则会导致full name
,从而导致错误。