sql >> Database >  >> RDS >> PostgreSQL

Hoe gebruik ik Rails met een kolomnaam in hoofdletters?

Dit is geen ActiveRecord- of AREL-probleem, dit is gewoon hoe hoofdlettergevoeligheid werkt in SQL en PostgreSQL.

Identifiers in SQL (zoals tabel- en kolomnamen) zijn niet hoofdlettergevoelig, tenzij ze tussen aanhalingstekens staan. Standaard SQL zegt dat ID's zonder aanhalingstekens naar hoofdletters worden gevouwen, PostgreSQL vouwt ze naar kleine letters, vandaar de bar.maxusers in de foutmelding.

De oplossing is om de beledigende kolomnaam te citeren:

.having('COUNT(foo.id) > bar."maxUsers"')

Merk op dat u dubbele aanhalingstekens moet gebruiken voor het aanhalen van de identifier, aangezien enkele aanhalingstekens alleen voor letterlijke tekenreeksen zijn. Merk ook op dat identifier-citaten database-specifiek zijn:standaard SQL en PostgreSQL gebruiken dubbele aanhalingstekens, MySQL gebruikt backticks, SQL Server gebruikt haakjes, ...




  1. Is dit een veilige methode om formuliergegevens in een MySQL-database in te voegen?

  2. MySQL-database-importfout #1064

  3. PHP-script (mysqli) echo's niet iets?

  4. MySQL naar PostgreSQL:hoe wijzig ik deze SQL-query?