为什么空格是SqlServer中的有效列名?

Mic*_*odd 10 sql-server

你自己看:

create table #temp ([ ] varchar(1))
insert into #temp values ('1')
select [ ] from #temp
Run Code Online (Sandbox Code Playgroud)

允许这样做的理由是什么?

Jos*_*rke 10

我认为理由更多的是:

是否值得阻止此功能?

我不知道SQL是如何在内部编码的,但我怀疑它会花费更多的努力来阻止它然后允许它.


Joe*_*orn 9

在调试复杂查询时,我一直将它用作占位符/分隔符.我可能有这样的事情:

SELECT a.*, ' ' as [ ], b.*
FROM a
LEFT JOIN b on ...
Run Code Online (Sandbox Code Playgroud)

这样我在两个表之间得到一个空白部分,这样我就可以很容易地在结果中看到一个停止而另一个停止.

稍后当我得到我需要的结果和性能时,我会将select子句更改为仅使用我关心的列.

也就是说,我想我没有理由不能使用别的东西作为列名.