2011-06-10 12 views

Respuesta

12

Los nombres de las funciones son identificadores (como nombres de tablas, nombres de campos), el mismo rules sobre sensibilidades de casos se aplica a todos.

En resumen, los identificadores son insensibles a , a menos que se indique.

Más precisamente, un identificador sin comillas se convierte internamente en en minúscula y luego se intenta una coincidencia de mayúsculas y minúsculas. Esto puede hacer que su vida sea miserable (es decir, errores ocultos, horas desperdiciadas), por lo general, si utilizó identificadores entre comillas para definir la tabla o función.

Es por eso que siempre debe definir su propio naming convention y atenerse a él.

Consejo general: use siempre minúsculas para los identificadores, y sea feliz.

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. 
+0

Buena respuesta, pero cuando escribes LOWERCASE tengo que parar y pensar un minuto. – polm23

+0

Buena captura. Fijo. Gracias – leonbloy

1

El identificador y los nombres de las palabras clave en PostgreSQL no distinguen entre mayúsculas y minúsculas. Los nombres de las funciones son identificadores.

1

Supongo que puede obtener muchas respuestas diferentes a esta pregunta. Técnicamente, los nombres de funciones en PostgreSQL distinguen entre mayúsculas y minúsculas. Pero cuando se dirige una función a través de SQL, se aplican las reglas de sintaxis del identificador, es decir, que los identificadores sin comillas se pliegan en minúsculas. Esto puede dar la ilusión de nombres de funciones insensibles a mayúsculas y minúsculas, pero es solo la idiosincrasia del lenguaje SQL. Contraste esto, por ejemplo, con los nombres de los lenguajes de procedimiento, que no distinguen entre mayúsculas y minúsculas, incluso si se citan dos veces los identificadores.

Cuestiones relacionadas