Являются ли имена функций в PostgreSQL нечувствительными к регистру? - PullRequest
6 голосов
/ 10 июня 2011

Имеет ли значение регистр вообще, когда вы определяете или вызываете функцию в PostgreSQL?

Ответы [ 3 ]

14 голосов
/ 10 июня 2011

Имена функций - это идентификаторы (например, имена таблиц, имена полей), те же правила о регистре чувствительны ко всем.

Короче говоря, идентификаторы не чувствительны к регистру, если не заключены в кавычки .

Точнее, идентификатор без кавычек внутренне преобразуется в строчные буквы , а затем регистрпопытка отправки по почтеЭто может сделать вашу жизнь несчастной (например, скрытые ошибки, потраченные часы), как правило, если вы использовали заключенные в кавычки идентификаторы при определении таблицы или функции.

Вот почему вы всегда должны определять свое собственное соглашение об именах и придерживаться его.

Общий совет: всегда используйте строчные буквы для идентификаторов и будьте счастливы.

db=# select now();
              now
-------------------------------
 2011-06-10 16:33:06.588401-03
(1 row)

db=# select Now();
              now
-------------------------------
 2011-06-10 16:33:08.066818-03
(1 row)

db=# select "now"();
              now
-------------------------------
 2011-06-10 16:33:14.543381-03
(1 row)

db=# select "Now"();
ERROR:  function Now() does not exist
LINE 1: select "Now"();
               ^
HINT:  No function matches the given name and argument types. You might need to add explicit type casts.
1 голос
/ 12 июня 2011

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

1 голос
/ 10 июня 2011

Идентификаторы и имена ключевых слов в PostgreSQL чувствительны к регистру.Имена функций являются идентификаторами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...