【问题标题】:[] brackets in sql statementssql语句中的[]括号
【发布时间】:2010-09-14 07:24:59
【问题描述】:

sql语句中的括号有什么作用?

例如在语句中:

插入 table1 ([columnname1], columnname2) 值 (val1, val2)

另外,如果表名在括号中,它会做什么?

【问题讨论】:

标签: sql ms-access


【解决方案1】:

[] 标记标识符的分隔符,因此,如果您有一个名称包含空格(如 Order Qty)的列,则需要用 [] 将其括起来,例如:

select [Order qty] from [Client sales]

它们还用于转义用作标识符的保留关键字

【讨论】:

    【解决方案2】:

    这是“分隔标识符”的 Microsoft SQL Server 非标准语法。 SQL 支持标识符的分隔符,以允许表名、列名或其他元数据对象包含以下内容:

    • SQL 保留字:“订单”
    • 包含空格的单词:“订单数量”
    • 包含标点符号的单词: “订单数量”
    • 包含国际的单词 字符
    • 列名 区分大小写:“订单”与“订单”

    Microsoft SQL Server 使用方括号,但这不是 SQL 用于分隔标识符的语法标准。标准情况下,应使用双引号作为分隔符。

    在 Microsoft SQL Server 中,您可以启用一种模式以使用标准双引号作为分隔符,如下所示:

    SET QUOTED_IDENTIFIER ON;
    

    【讨论】:

    • 即使有引号或方括号,SQL Server 中的名称也不一定区分大小写;它取决于服务器或数据库排序规则。此外,括号不是 SQL Server 独有的。它们也在 Sybase 中。
    • 谢谢,Sybase 支持括号是有道理的,因为它和 SQL Server 曾经是相同的代码库。
    • 方括号的东西是否也适用于 MS Access 以及 SQL Server?
    • @DanW,MS Access 使用方括号来分隔标识符。以下是 MS Access 中标识符语法的摘要:office.microsoft.com/en-us/access-help/…
    【解决方案3】:

    它们旨在转义保留的关键字或无效的列标识符。

    CREATE TABLE test
    (
      [select] varchar(15)
    )
    
    INSERT INTO test VALUES('abc')
    
    SELECT [select] FROM test
    

    【讨论】:

      【解决方案4】:

      它们允许您在列、表等的名称中使用关键字(例如日期)...

      由于这是一种不好的做法,因此通常不包括在内。您应该看到它们被使用的唯一地方是那些从不知道更好的 sql 查询开始的人。除此之外,它们只会使您的查询变得混乱。

      【讨论】:

        【解决方案5】:

        括号内的任何内容都被视为单个标识符(例如 [test machine]。这可用于将名称用空格括起来或转义保留字(例如 [order]、[select]、[group])。

        【讨论】:

          【解决方案6】:

          如果您使用的任何列名与 sql 中的任何保留关键字相同,在这种情况下,您可以将列名放在方括号中,以区分您的自定义列名和现有的保留关键字。

          【讨论】:

            【解决方案7】:

            当表名或文件名带有空格或破折号 (-) 等时...您可能会收到“FROM 子句中的系统税错误”。 使用 [] 括号来解决这个问题。

            见:https://msdn.microsoft.com/en-us/library/ms175874.aspx

            【讨论】:

              【解决方案8】:

              它们只是允许您在列名或表名中放置特殊字符(如空格)的分隔符 例如

              insert into [Table One] ([Column Name 1], columnname2) values (val1, val2)
              

              【讨论】:

                猜你喜欢
                • 2021-10-27
                • 1970-01-01
                • 2015-10-27
                • 2016-12-04
                • 1970-01-01
                • 2015-02-13
                • 1970-01-01
                相关资源
                最近更新 更多