双重报价相关问题

时间:2014-08-26 04:57:08

标签: sql sql-server sql-server-2008

当我想更改表格的列名时,以下查询正常运作

 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)

为什么有必要使用' '这里吗?

1 个答案:

答案 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,从而导致错误。