我理解方括号允许使用保留名称或以前不允许的字符,例如标识符中的空格.我认为在各处添加它们都是很好的做法. (见
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
我可以看到,通过用单引号定义列名,方括号变得多余,但我不明白为什么它们会中断调用.表格参数的方括号工作增加了我的困惑.
不应该使用方括号的规则吗?
最佳答案 不要将方括号传递给仅在实际SQL语句中使用字符串的函数.该函数正在查找名称包括方括号的表.