SQL列名 方括号是什么意思呢? (*^__^*)

时间:2021-08-08 21:18:01
INSERT INTO [City] VALUES (1,'北京')

CREATE DATABASE [HRManager]


USE [HRManager]

等等这些

一些表名都有这个方括号?

究竟什么时候用什么时候不用呢?

谢谢

15 个解决方案

#1


列名或表名等。。。前后加有[],保证某些以外的发生。
如列名或表名为user时,就需要加上[]

#2


如果表名或列名 中间有空格,或者是关键字 就要用[ ] 括起来,不然就语法错误了!

#3


不用也可以啊。
Logs

[Logs]

均可


=============================================

但,对象名中间有空格的必须得用,如:

[Fuck Japanese Logs]

=============================================

#4


楼主有点意思啊,跑这儿散分来了?

#5


楼主,为什么是 31 分呢?

#6


我不是散分啊.哈哈.

这个问题我真的不知道.


那为啥不规定所有都加括号呢?一了百了.哈哈

#7


一般列名或表名为reserved word需要加[]

#8


31分.也没什么啊.

1总会比0好吧.

#9


那就接分吧

#10


好看,区别自己定的列名或函数名子和系统定义的冲突
如 use name 这类

#11


加[]或""用于定界列名或表名等信息,以区别一些特殊的不合命名规则的字串,或是与系统保留字有冲突。

在不同dbms中有不一样的限制。

如jetsql里,user为高级保留字,表名命名为user
select * from user
会报错。

t-sql user为保留字,但不是那么严格
select * from user没有问题。

又如,如果一个表名或列名命名为group
select * from group 就会报错。

又比如,定义了一个列,列名为 sql xml
select sql xml from tb
就会报错,因为 列名命名规则不允许空格。
这里,sql会以为你要从tb表里查,名为sql的列,并给别名 xml, 就会提示列sql不存在。
应该写为
select [sql xml] from tb

当然,同时一些特殊字符也一样。


当你不确定你的表名或列名是否会与SQL保留字冲突时,最好用[]或""定界。

#12


引用 6 楼 andyhooo 的回复:
我不是散分啊.哈哈. 

这个问题我真的不知道. 


那为啥不规定所有都加括号呢?一了百了.哈哈



ANSI-SQL-92 标准就是这么制定的。
我国尚无发言权。

#13


(*^__^*) 

#14


加[]或""用于定界列名或表名等信息,以区别一些特殊的不合命名规则的字串,或是与系统保留字有冲突。

#15


我只是路过,顺便回复,绝不接分。
给分的后果自负!

#1


列名或表名等。。。前后加有[],保证某些以外的发生。
如列名或表名为user时,就需要加上[]

#2


如果表名或列名 中间有空格,或者是关键字 就要用[ ] 括起来,不然就语法错误了!

#3


不用也可以啊。
Logs

[Logs]

均可


=============================================

但,对象名中间有空格的必须得用,如:

[Fuck Japanese Logs]

=============================================

#4


楼主有点意思啊,跑这儿散分来了?

#5


楼主,为什么是 31 分呢?

#6


我不是散分啊.哈哈.

这个问题我真的不知道.


那为啥不规定所有都加括号呢?一了百了.哈哈

#7


一般列名或表名为reserved word需要加[]

#8


31分.也没什么啊.

1总会比0好吧.

#9


那就接分吧

#10


好看,区别自己定的列名或函数名子和系统定义的冲突
如 use name 这类

#11


加[]或""用于定界列名或表名等信息,以区别一些特殊的不合命名规则的字串,或是与系统保留字有冲突。

在不同dbms中有不一样的限制。

如jetsql里,user为高级保留字,表名命名为user
select * from user
会报错。

t-sql user为保留字,但不是那么严格
select * from user没有问题。

又如,如果一个表名或列名命名为group
select * from group 就会报错。

又比如,定义了一个列,列名为 sql xml
select sql xml from tb
就会报错,因为 列名命名规则不允许空格。
这里,sql会以为你要从tb表里查,名为sql的列,并给别名 xml, 就会提示列sql不存在。
应该写为
select [sql xml] from tb

当然,同时一些特殊字符也一样。


当你不确定你的表名或列名是否会与SQL保留字冲突时,最好用[]或""定界。

#12


引用 6 楼 andyhooo 的回复:
我不是散分啊.哈哈. 

这个问题我真的不知道. 


那为啥不规定所有都加括号呢?一了百了.哈哈



ANSI-SQL-92 标准就是这么制定的。
我国尚无发言权。

#13


(*^__^*) 

#14


加[]或""用于定界列名或表名等信息,以区别一些特殊的不合命名规则的字串,或是与系统保留字有冲突。

#15


我只是路过,顺便回复,绝不接分。
给分的后果自负!