Подтвердить что ты не робот

Почему пространство в предложении Where не вызывает синтаксическую ошибку?

Ниже три запроса Select, независимо от предложения Where, имеющего дополнительное пространство между псевдонимом таблицы и именем столбца, дают тот же результат. У всех есть одинаковые планы выполнения. Почему присутствие пробела не выдает синтаксическую ошибку?

DECLARE @TblX TABLE(
    ColX int
    ,ColY float
    )

-----As it normally should be
SELECT *
FROM @TblX X
WHERE X.ColX = 1

----Even this works
SELECT *
FROM @TblX X
WHERE X .ColX = 1

----And this too
SELECT *
FROM @TblX X
WHERE X. ColX = 1
4b9b3361

Ответ 1

Поскольку SQL, хотя и не полностью нечувствительный к пространству, является, скажем, "пространственно-терпимым". Например, попробуйте следующее:

SELECT 23AB

Весело, да? Эта функция появилась еще в исходных спецификациях SQL в начале 1980-х годов, когда некоторые из них по-прежнему считались хорошими (потому что Fortran и COBOL имели подобное поведение). IIRC, он устарел сейчас, но по причинам, связанным с наследием/совместимостью, мы все еще придерживаемся этого.