ВЫБЕРИТЕ имя столбца, начинающееся с цифры

#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 вариант плохой идеей, поскольку он может привести к стольким двусмысленностям. Спасибо, что прояснили это.