sql >> Database >  >> RDS >> PostgreSQL

Zijn functienamen in PostgreSQL niet hoofdlettergevoelig?

Functienamen zijn identifiers (zoals tabelnamen, veldnamen), dezelfde regels over hoofdlettergevoeligheid geldt voor iedereen.

Kortom, identifiers zijn hoofdletterongevoelig, tenzij geciteerd .

Om precies te zijn, een ID die niet tussen aanhalingstekens staat, wordt intern geconverteerd naar kleine letters en vervolgens wordt geprobeerd een case-sentitive match te maken. Dit kan uw leven zuur maken (d.w.z. verborgen bugs, verspilde uren), meestal als u identifiers tussen aanhalingstekens gebruikt bij het definiëren van de tabel of functie.

Daarom moet je altijd je eigen naamgevingsconventie definiëren en je eraan houden.

Algemeen advies:gebruik altijd kleine letters voor identifiers, en wees tevreden.

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. automatisch ophogen van de primaire waardoor er gaten in het tellen blijven

  2. SQL SELECTEER IN

  3. Star Trek 3D-schaakgegevensmodel

  4. PostgreSQL-query wordt sneller uitgevoerd met indexscan, maar engine kiest hash-join