【问题标题】:When are square brackets not to be used?什么时候不使用方括号?
【发布时间】:2013-08-12 15:14:11
【问题描述】:

我了解方括号允许在标识符中使用保留名称或以前不允许使用的字符,例如空格。我认为到处添加它们是一种很好的做法。 (见What is the use of the square brackets [] in sql statements?

但是,我注意到当我在 COL_LENGTH 函数中使用它们时,我得到了一些意想不到的结果:

SELECT COL_LENGTH(N'[TestTable]', N'[RatingID]')    -- Returns NULL
SELECT COL_LENGTH(N'TestTable', N'[RatingID]')      -- Returns NULL
SELECT COL_LENGTH(N'[TestTable]', N'RatingID')      -- Returns 10
SELECT COL_LENGTH(N'TestTable', N'RatingID')        -- Returns 10

我可以看到,通过在单引号中定义列名,方括号变得多余,但我不明白为什么它们会中断调用。方括号适用于 table 参数增加了我的困惑。

有什么规定什么时候不应该使用方括号

【问题讨论】:

  • 也不想在#temp 中使用方括号。至少我在使用括号和#temp 时遇到了麻烦。

标签: sql-server tsql syntax


【解决方案1】:

不要将方括号传递给只在实际 SQL 语句中使用的字符串的函数。该函数正在查找名称中包含方括号的表。

【讨论】:

  • 对,基本上 SQL Server 会在某些函数中为您应用QUOTENAME()。问题在于它是不一致的——有时会,有时不会。我不知道一个方便的列表可以区分......
猜你喜欢
  • 2018-10-13
  • 2022-11-10
  • 2020-01-09
相关资源
最近更新 更多