【问题标题】:SQL query not running where column name is reserved word列名是保留字的 SQL 查询未运行
【发布时间】:2015-10-23 20:16:01
【问题描述】:

我有一个 SQL 保留字的列名,我如何在 SQL Server Management Studio 的查询资源管理器中运行此查询

SELECT Name, [myTable].Schema
FROM myTable

【问题讨论】:

    标签: sql sql-server sql-server-2012


    【解决方案1】:

    在您的保留字周围添加[]

    SELECT [Name], myTable.[Schema]
    FROM myTable
    

    实际上在每个段周围添加括号并没有什么坏处:

    SELECT [Name], [myTable].[Schema]
    FROM [myTable]
    

    【讨论】:

    • 啊。不要在每个名称周围添加括号。这只会使查询更难编写和阅读。只需避免保留字和不可接受的字符。
    【解决方案2】:

    在那个保留的世界上使用大括号。

    SELECT [Name], [myTable].[Schema]
    FROM [myTable]
    

    【讨论】:

      【解决方案3】:

      是的,只需使用保留世界周围的括号。

      【讨论】:

        【解决方案4】:

        是的,方括号有帮助。在方括号中使用保留字时,您甚至不必提及表名(如果这是您命名表列的名称)。

        SELECT [Name], [Schema]
        FROM   myTable
        

        您甚至可以使用方括号为列名添加一个空格。 例如:

        SELECT [Name] as [Table Name] [Schema] as [Column Name] FROM [myTable]

        只是一个小提示(不建议) - 您还可以使用方括号在列名中使用空格。 例如:CREATE TABLE Sample_table ([Order Number] INT)

        【讨论】:

          【解决方案5】:

          代替专有方括号 [identifier],您最好使用标准 SQL 的双引号 "identifier",它被(可能)每个 DBMS 支持,包括 MS SQL Server

          SELECT Name, "Schema"
          FROM myTable
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2017-07-14
            • 2018-03-16
            • 2015-01-12
            • 2018-12-07
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多