Являются ли имена столбцов PostgreSQL чувствительными к регистру?
у меня есть таблица БД, скажем, persons
в Postgres, переданном другой командой, у которой есть имя столбца, говорят:"first_Name"
. Теперь я пытаюсь использовать PG commander для запроса этой таблицы на это имя столбца.
select * from persons where first_Name="xyz";
и он просто возвращает
ошибка: столбец "first_Name" не существует
не уверен, если я делаю что-то глупое или есть обходной путь к этой проблеме, что я не хватает?
3 ответа:
все идентификаторы (включая имена столбцов), которые не заключены в двойные кавычки, складываются в нижний регистр в PostgreSQL. Имена столбцов, которые были созданы с двойными кавычками и тем самым сохранили заглавные буквы (и/или другие нарушения синтаксиса), должны быть дважды заключены в кавычки на всю оставшуюся жизнь. Итак,Да, имена столбцов PostgreSQL чувствительны к регистру:
SELECT * FROM persons WHERE "first_Name" = 'xyz';
также исправить неправильные двойные кавычки
'xyz'
. Значения (строковые литералы) заключаются в одинарные кавычки.мой постоянный совет-использовать юридические, строчные имена исключительно, поэтому двойное цитирование не требуется.
цитировать документация:
ключевые слова и некотируемые идентификаторы не учитывают регистр. Таким образом:
UPDATE MY_TABLE SET A = 5;
можно эквивалентно записать как:
uPDaTE my_TabLE SeT a = 5;
цитирование идентификатора делает его чувствительным к регистру, тогда как некотируемые имена всегда складываются в нижний регистр:
UPDATE "my_table" SET "a" = 5; // equivalent to the above examples