如何在动态 sql 中的 table 名称中使用 &(与号)字符?

How to use & (ampersand) character in table name in dynamic sql?

我正在使用来自一组 table 的动态 SQL 到 Select,其中一些 table 名称包含“&”字符。 但是,一旦我的查询命中其中一个 tables,我就会收到以下错误:

Incorrect syntax near '&'.

下面是一些重现我遇到的错误的示例代码:

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

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

如何更改此查询,以便我可以使用动态 SQL 从 table 个包含“&”的名称中 Select?

添加一个QUOTENAME

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

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