#sql #database-design
Вопрос:
Это из нездорового любопытства. У меня здесь очень неудачно названный стол:
CREATE TABLE badtable ( id INT PRIMARY KEY, "customer name" VARCHAR(63), "order" VARCHAR(12), "1st" date, "last-date" date );
Я пытаюсь показать, когда вам могут отчаянно понадобиться имена столбцов с разделителями. Однако следующее не является ошибкой:
SELECT "customer name", "order", 1st, -- no delimiter "last-date" FROM badtable;
Вместо этого он с радостью дает мне колонку под названием st
.
Это работает как на PostgreSQL, так и на Microsoft SQL Server, так что это не ограничивается причудой одного из них.
Как интерпретируется имя 1st
столбца?
Ответ №1:
В некоторых ситуациях пробелы не требуются, если СУБД способна однозначно считывать выражение.
select 1st
выбирает 1. Далее следует псевдоним. Следовательно, то же самое, что
select 1 st
или
select 1 as st
Комментарии:
1. Я всегда считал необязательный
AS
вариант плохой идеей, поскольку он может привести к стольким двусмысленностям. Спасибо, что прояснили это.