Почему пространство является допустимым именем столбца в SqlServer?

Смотрите сами:

create table #temp ([ ] varchar(1))
insert into #temp values ('1')
select [ ] from #temp

Что в мире есть обоснование для разрешения этого?

Ответ 1

Я думаю, что рассуждение больше соответствует следующим:

Стоит ли мешать этому Функциональность?

Я не знаю, как SQL кодируется внутри, но я подозреваю, что потребуется больше усилий, чтобы предотвратить это, чтобы разрешить его.

Ответ 2

Я использую его все время в качестве заполнителя/разделителя при отладке сложных запросов. У меня может быть что-то вроде этого:

SELECT a.*, ' ' as [ ], b.*
FROM a
LEFT JOIN b on ...

Таким образом, я получаю пустой раздел между двумя таблицами, поэтому я могу легко увидеть результаты, где один останавливается, а другой начинается.

Позже, когда я получу результаты и производительность, мне нужно, чтобы я изменил предложение select, чтобы использовать только те столбцы, о которых я забочусь.

Тем не менее, я полагаю, нет причин, по которым я не мог бы использовать что-то еще для имени столбца.

Ответ 3

Любые допустимые символы могут использоваться между [] для определения имен столбцов и таблиц. Учитывая, что что-то вроде [Колонка] является допустимым (с пробелом), нет никаких оснований предотвращать одно пространство как имя столбца.

Однако конечные пробелы удаляются так.

[ ] and [  ] (1 & 2 spaces) 
будут обрабатываться как
[ ] (1 space).

Ответ 4

Пространство является приемлемым символом, так как некоторым людям нравятся пробелы в именах столбцов. И если это может быть частью имени столбца, то почему не имя столбца само по себе?

Почему они когда-либо это делают, это останется для меня загадкой, поскольку это затрудняет программирование (постоянно включающее все в "" или []). Я действительно видел имя столбца с вопросительным знаком, что, безусловно, то, что я бы избегал использовать в любом идентификаторе, но это возможно, все же.

Ответ 5

Я предполагаю, что пространство подобно любому другому персонажу. Вы даже можете создать таблицу с именем []. (Я попробовал, и это сработало.) Я думаю, что на это просто никаких ограничений.

Ответ 6

Я понимаю, что я достаточно ответственен, чтобы не навредить потенциально опасным функциям. Я не нашел веских оснований для пробелов в именах объектов сам, но в некоторых случаях он кажется популярным. Это экстремальный пример работы с ножницами.