Не удается выбрать существующий столбец в PostgreSQL

#sql #postgresql

#sql #postgresql

Вопрос:

Я новичок в SQL и пытаюсь выбрать столбец Foto_municipis:

     askdbase4=# select * from avatar_avatarx;
 id | llista_municipis | Foto_municipis  | primary |     date_uploaded      
---- ------------------ ----------------- --------- ------------------------
  1 | Tore             | tore.jpg        | t       | 2014-06-05 01:19:40 02
  2 | Calldetenes      | calldetenes.jpg | f       | 2014-06-05 23:24:18 02
  3 | Rupit i Pruit    | baixa.jpeg      | f       | 2014-06-16 03:09:48 02
  4 | Olost            | olost.jpg       | f       | 2014-06-16 23:20:05 02
(4 rows)
  

по какой-то причине я могу успешно выбрать llista municipis:

 SELECT llista_municipis FROM avatar_avatarx;
  

но когда я пытаюсь выбрать Foto_municipis, это то, что я получаю:

 askdbase4=# SELECT llista_municipis FROM avatar_avatarx;

ERROR:  column "Foto_municipis" does not exist
LINE 1: select Foto_municipis from avatar_avatarx;
  

Что я делаю не так?

Комментарии:

1. Все это объясняется в руководстве: postgresql.org/docs/current/static /…

2. похоже, согласно руководству, признаком имени, требующего кавычек, является то, что оно содержит символ, а не в наборе {[a-z], [0-9], _, amp;}

Ответ №1:

Вероятно, вы создали столбец с идентификатором, заключенным в двойные кавычки, и это сработает:

 select "Foto_municipis"
from avatar_avatarx
  

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

Если столбец создан с идентификатором без двойных кавычек, на него можно ссылаться в любом стиле регистра, подобном Foto_municipis или foto_Municipis независимо от стиля исходного регистра идентификатора.