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

时间:2018-01-17 17:24:06

标签: 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_NAME
)

如何更改此查询,以便我可以从包含'&'使用动态SQL?

1 个答案:

答案 0 :(得分:2)

添加QUOTENAME

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

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