如何使用&;动态sql中表名中的(符号)字符?

如何使用&;动态sql中表名中的(符号)字符?,sql,sql-server,sql-server-2012,dynamic-sql,Sql,Sql Server,Sql Server 2012,Dynamic Sql,我使用动态SQL从一组表中进行选择,其中一些表名包含“&”字符。 但是,一旦查询命中其中一个表,就会出现以下错误: “&”附近的语法不正确 下面是一些示例代码,它重新创建了我得到的错误: DECLARE @TABLE_NAME AS NVARCHAR(150); SET @TABLE_NAME = 'A&BTable'; EXEC( 'SELECT col1, col2, col3 FROM Warehouse_Repository.dbo.' + @TABLE_NA

我使用动态SQL从一组表中进行选择,其中一些表名包含“&”字符。 但是,一旦查询命中其中一个表,就会出现以下错误:

“&”附近的语法不正确

下面是一些示例代码,它重新创建了我得到的错误:

DECLARE @TABLE_NAME AS NVARCHAR(150);
SET @TABLE_NAME = 'A&BTable';

EXEC(
    'SELECT col1, col2, col3
     FROM Warehouse_Repository.dbo.' + @TABLE_NAME
)
如何更改此查询,以便使用动态SQL从包含“&”的表名中进行选择?

添加


在名称周围使用括号
[]
,甚至更好-不要使用特殊字符!
    DECLARE @TABLE_NAME AS NVARCHAR(150);
    SET @TABLE_NAME = QUOTENAME('A&BTable');

    EXEC(
        'SELECT col1, col2, col3
         FROM dbo.' + @TABLE_NAME
    )