代码之家  ›  专栏  ›  技术社区  ›  Erik

[]sql语句中的括号

  •  26
  • Erik  · 技术社区  · 16 年前

    括号在sql语句中起什么作用?

    insert into table1 ([columnname1], columnname2) values (val1, val2)

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

    8 回复  |  直到 16 年前
        1
  •  45
  •   albertein    16 年前

    []标记标识符的界限,因此如果有一列的名称包含空格(如Order Quantity),则需要用[]将其括起来,如:

    select [Order qty] from [Client sales]
    

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

        2
  •  14
  •   Bill Karwin    16 年前

    • SQL保留字:“订单”
    • 包含空格的单词:“订单数量”
    • “订单数量”
    • 含有国际语言的词语 人物
    • 指定的列名 区分大小写:“订单”与“订单”

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

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

    SET QUOTED_IDENTIFIER ON;
    
        3
  •  6
  •   Jorge Ferreira    16 年前

    它们用于转义保留关键字或无效列标识符。

    CREATE TABLE test
    (
      [select] varchar(15)
    )
    
    INSERT INTO test VALUES('abc')
    
    SELECT [select] FROM test
    
        4
  •  3
  •   Ty.    16 年前

    它们允许您使用关键字(例如 日期

    由于一开始这是一种不好的做法,因此通常不包括它们。您应该看到它们被使用的唯一地方是那些刚开始使用sql查询的人,他们对此一无所知。除此之外,他们只是把你的问题弄得一团糟。

        5
  •  2
  •   Orion Adrian    16 年前

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

        6
  •  1
  •   sumon    12 年前

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

        7
  •  1
  •   juFo    9 年前

    如果表名或文件名带有空格或破折号(-)等。。。您可以从FROM子句中收到“Systax错误”。 使用[]括号解决此问题。

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

        8
  •  0
  •   Darrel Miller    16 年前

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

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