【问题标题】:What do brackets mean around column names in SQL Server?SQL Server 中列名周围的括号是什么意思?
【发布时间】:2011-04-02 20:25:56
【问题描述】:

我在 SQL Server 2008 中添加了一个字段,并将列名放在括号中,如下所示:[column2]。其他列名没有括号。括号是什么意思?

列名为macro-writer

我应该删除减号并用下划线替换它吗?

【问题讨论】:

  • OP 说should i remove the minus sign and replace with underscore。我愿意,只要这样我就不必到处使用[]
  • 它将尝试执行macro-writer 的算术运算,并为macrowriter 抛出无效的列名异常。

标签: sql-server


【解决方案1】:

括号是一种引用形式。仅当列名包含空格或标点符号或与保留字冲突时才需要,但许多向导只会为所有字段名添加括号,以避免判断是否需要的逻辑。

【讨论】:

    【解决方案2】:

    括号允许您在 SQL Server 中分隔名称。这允许您执行诸如使用关键字 [count] 或包含空格 [my column name] 之类的操作。

    编辑:对于您的后续问题,如果这是一个新列并且没有破坏现有代码的风险,那么我至少建议用下划线替换连字符。我们自己的内部命名标准是使用 PascalCase(例如,MacroWriter)而不是下划线。

    【讨论】:

      【解决方案3】:

      查看相关问题及答案:

      我建议在标识符名称中使用下划线而不是破折号。

      【讨论】:

        【解决方案4】:

        括号允许您使用不允许的字符和名称,例如空格、保留字和以数字开头的名称

        无效我的列,1column col%umn,表

        有效 [my column], [1column], [col%umn], [table]

        当然,现在你可以变得非常有创意了 :-)

        create table [table]([table] varchar(20))
        
        insert [table] values ('table')
        
        select [table] from [table]
        

        【讨论】:

        • 你永远不会有一张混合了希伯来文和泰文字体的桌子
        • 好吧,为什么不亲自尝试一下;)。适用于 SQL 2005、2008 创建表 [แสดงבוקרǣ](ID int not null)
        • 从 [table] 中选择 [table],其中 [table].[table] = 'table'。我喜欢它!
        • 我认为使用这样的空格和特殊字符作为列标识符可能只会在其他地方给自己带来不必要的麻烦,并且通常会避免它。但是使用[my column] 与更传统的SQL "my column" 相比有什么优势呢?
        【解决方案5】:

        方括号中的列通常是关键字或包含特殊字符或空格。

        括号中的具体列名是什么?

        【讨论】:

        • [宏作者] [宏作者]
        • 连字符被视为特殊字符。
        • 是的,如果列名是INDEX那么我们需要使用[]来取出结果。因为 INDEX 是关键字
        猜你喜欢
        • 2012-11-16
        • 1970-01-01
        • 2014-10-01
        • 1970-01-01
        • 1970-01-01
        • 2016-04-22
        相关资源
        最近更新 更多