如何处理 table name 里面有 [ ] 方括号?

How to deal with table name with [ ] square brackets inside?

我的代码向 SQL 服务器发出 SQL 查询,例如:

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

这一直有效,直到在名为 SLOT_APRX[NOT USED] 的客户 table 上失败。请注意 table 名称中的 []

那么在 SQL 服务器中转义 table 名称的正确、更安全的方法是什么?

也许引用标识符设置可以帮到您..

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

转义 ],就像在文字字符串中转义 '[SLOT_APRX[NOT USED]]]:

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

然而,理想情况下,您不应该有需要分隔(和转义)的对象名称,这样可以避免这样的问题。