2009-07-07 22 views

回答

3

只要你用'['和']'来包围每一列名称,那么你使用什么并不重要。即使是一个空间的作品(尝试:[])。

编辑:如果在任何情况下都不能使用'['和']',请检查文档中不允许使用的字符以及系统固有的关键字;那些会超出界限。关于我的头顶,允许用于标识符的字符(对于SqlServer)是:a-z,A-Z,0-9,_,$,#。

+2

是的,但我仍然建议避免'空间'作为一个名称。 :-) – 2009-07-07 15:48:51

+0

哦,我同意。我第一次发现你可以做到这一点,我感到震惊(甚至在这里问了一个关于它的问题)。有人向我展示了一个有用的例子:当你正在测试查询时,为查询结果提供更好的空间。 – 2009-07-07 15:50:54

3
一般

不以数字开头,不要使用空格,不要使用保留字和不使用非字母数字字符

但是如果你真的想你仍然可以做,但你需要用括号

包围它,这将失败

create table 1abc (id int) 

这不会失败

create table [1abc] (id int) 

但现在您需要始终使用[],我会避免使用上面提到的名称

1

您应该避免使用任何保留的SQL关键字(例如, SELECT)并从最佳实践中避免空格。

1

是的,没有。

  • 是的,因为这很烦人和混乱有匹配的关键字名称,并且您有滑稽的方式来逃避(当你不能始终如一地逃避)
  • 没有,因为它可能有任何作为标识字符序列,如果你逃避它正确:)

使用[square brackets]"double quotes"逃离多字的标识符或关键字,甚至有反斜杠或任何其他有点奇怪角色的名字,如果你必须。

1

严格地说,没有什么你不能命名你的列。但是,如果您避免使用您正在编程的语言中的空格,SQL保留字和保留字的名称,它会使您的生活更轻松。

1

只要用方括号括住它,就可以使用几乎任何东西:

SELECT [value], [select], [insert] FROM SomeTable 

然而,我想避免这样做,一方面是因为无处不在键入方括号中是烦人和partyly因为我一般不找到像“值”特别描述列名称! :-)

只要远离SQL关键字和任何包含字母之外的东西,并且不应该需要使用那些讨厌的方括号。

1

入住在其他的答案表示保留关键字的列表。

为避免在对象名称中有空格或其他特殊字符,请避免使用引号或方括号使用“引号”。原因是引用时,对象名在某些数据库引擎中变得区分大小写(虽然对MSSQL不确定)

有些团队使用数据库对象(表,视图,列)的前缀,如T_PERSON, V_PERSON, C_NAME等。我个人不会像这个惯例,但它确实有助于避免关键字问题。

0

小心使用上的更新方括号的,我使用下面的查询有一个问题:

更新日志SET锁定= 1 WHERE [ID] IN(SELECT [ID] FROM IDS)

这导致所有记录将被更新,然而,这似乎很好地工作:

更新日志SET锁定= 1 WHERE ID IN(SELECT [ID] FROM IDS)

注意,这个问题似乎具体到更新,作为以下仅返回预期的行(并非全部r OWS):

SELECT * FROM日志WHERE [ID] IN(SELECT [ID] FROM IDS)

这使用MSDE 2000 SP3并连接到使用MS SQL(2000)查询分析器V 8.00数据库。 194

很奇怪,可能与此相关的知识库错误http://support.microsoft.com/kb/140215

最后我只是删除所有不必要的方括号。

相关问题