Как бороться с именем таблицы внутри квадратных скобок? - PullRequest
1 голос
/ 08 ноября 2019

Мой код выдает запросы SQL к SQL Server, например:

SELECT * FROM [db_name].[schema_name].[table_name];

Это работало до тех пор, пока не завершилось с ошибкой в ​​таблице клиентов с именем SLOT_APRX[NOT USED]. Обратите внимание на [ и ] внутри имени таблицы.

Каков правильный, более безопасный способ экранирования имен таблиц в SQL Server?

Ответы [ 2 ]

2 голосов
/ 08 ноября 2019

Избегайте ], как если бы вы ' в литеральной строке: [SLOT_APRX[NOT USED]]]:

SELECT *
FROM dbo.[SLOT_APRX[NOT USED]]];

В идеале, однако, вы не должны иметь имен объектов, которые должны бытьразделитель определен (и экранирован), что позволяет избежать подобных проблем.

2 голосов
/ 08 ноября 2019

Возможно, вам на помощь придет настройка Quoted Identifier.

SET QUOTED_IDENTIFIER ON
SELECT TOP 10 * FROM "SLOT_APRX[NOT USED]"

https://docs.microsoft.com/en-us/sql/t-sql/statements/set-quoted-identifier-transact-sql?view=sql-server-ver15

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...