SQL Server管理工具语法

3

有人能解释一下MSManagement Studio在查询中总是用括号封装列的重要性吗? 例如...

SELECT TOP 1000 [id]
  ,[app_fn]
  ,[app_mn]
  ,[app_ln]
  ,[app_suffix]

它们存在的目的是什么,我如何利用它们来获得优势?


只是为了明确:这是完全有效的 T-SQL 语法,可以在任何地方使用 - *不仅仅是在 SQL Server Mgmt Studio 中。 - marc_s
3个回答

7

如果您使用关键字作为列名,通常会使用它们。(不好的做法)

此外,如果您的列名中有空格(也是不好的做法)。


并且为了保护您的列名不受保留字影响,以及防止出现问题。 - asawyer
+1..此外,它们还可以用于指定与SQL关键字相同的列名。例如:SELECT 'SOMETHING' [SELECT] - Chandu
1
在评论中继续一个模因主题也是不好的。 - Barrie Reader
SSMS在为您生成脚本时只是谨慎小心而已。实际上,如果有人在表/函数/过程中使用保留字,我会非常不满,因为没有人想在查询中输入[] - Yuck
1
@Yuck - 猫没有拇指,也不能“勒死” - Barrie Reader
@Yuck - 这是真的,但拥有大拇指更有效率! - Barrie Reader

5

它们允许使用具有以下特点的标识符:

  • 带有空格
  • 是保留关键字
  • 以数字开头
  • 使用标点符号
  • 否则无效

尝试在没有 [ 和 ] 的情况下进行此操作。

CREATE TABLE dbo.[CREATE TABLE] (
    [SELECT] int NOT NULL, 
    [int] varchar(20) NOT NULL,
    [NOT NULL] datetime NULL,
    [Mary's Lamb] datetime NULL,
    [666 The number of the "beast"!] datetime NULL
    )

在这种情况下,SSMS总是使用它们。

4
这是一个示例
我有一个名为groups的表,其中包含user和group字段。
由于user和group都是保留字,自动在表、字段等周围放置方括号将不会出现任何问题。
因此,应该这样写:
select group from groups group by user

会失败。
select [group] from [groups] group by [user]

不好。

2
同样也包括[带空格或保留字符的列名] - Alex K.
是的。它也涵盖了空格和保留字符。 - BugFinder

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接