Смотрите сами:
create table #temp ([ ] varchar(1))
insert into #temp values ('1')
select [ ] from #temp
Что в мире есть обоснование для разрешения этого?
Смотрите сами:
create table #temp ([ ] varchar(1))
insert into #temp values ('1')
select [ ] from #temp
Что в мире есть обоснование для разрешения этого?
Я думаю, что рассуждение больше соответствует следующим:
Стоит ли мешать этому Функциональность?
Я не знаю, как SQL кодируется внутри, но я подозреваю, что потребуется больше усилий, чтобы предотвратить это, чтобы разрешить его.
Я использую его все время в качестве заполнителя/разделителя при отладке сложных запросов. У меня может быть что-то вроде этого:
SELECT a.*, ' ' as [ ], b.*
FROM a
LEFT JOIN b on ...
Таким образом, я получаю пустой раздел между двумя таблицами, поэтому я могу легко увидеть результаты, где один останавливается, а другой начинается.
Позже, когда я получу результаты и производительность, мне нужно, чтобы я изменил предложение select, чтобы использовать только те столбцы, о которых я забочусь.
Тем не менее, я полагаю, нет причин, по которым я не мог бы использовать что-то еще для имени столбца.
Любые допустимые символы могут использоваться между [] для определения имен столбцов и таблиц. Учитывая, что что-то вроде [Колонка] является допустимым (с пробелом), нет никаких оснований предотвращать одно пространство как имя столбца.
Однако конечные пробелы удаляются так.
[ ] and [ ] (1 & 2 spaces)будут обрабатываться как
[ ] (1 space).
Пространство является приемлемым символом, так как некоторым людям нравятся пробелы в именах столбцов. И если это может быть частью имени столбца, то почему не имя столбца само по себе?
Почему они когда-либо это делают, это останется для меня загадкой, поскольку это затрудняет программирование (постоянно включающее все в "" или []). Я действительно видел имя столбца с вопросительным знаком, что, безусловно, то, что я бы избегал использовать в любом идентификаторе, но это возможно, все же.
Я предполагаю, что пространство подобно любому другому персонажу. Вы даже можете создать таблицу с именем []. (Я попробовал, и это сработало.) Я думаю, что на это просто никаких ограничений.
Я понимаю, что я достаточно ответственен, чтобы не навредить потенциально опасным функциям. Я не нашел веских оснований для пробелов в именах объектов сам, но в некоторых случаях он кажется популярным. Это экстремальный пример работы с ножницами.