sql >> Database >  >> RDS >> Sqlserver

Hoofdlettergevoeligheid van Postgres

In PostgreSQL zijn niet-aangehaalde namen niet hoofdlettergevoelig. Dus SELECT * FROM hello en SELECT * FROM HELLO gelijkwaardig zijn.

Geciteerde namen zijn echter hoofdlettergevoelig. SELECT * FROM "hello" is niet gelijk aan SELECT * FROM "HELLO" .

Om een ​​"brug" te maken tussen namen tussen aanhalingstekens en niet-aangehaalde namen, worden niet-aangehaalde namen impliciet in kleine letters gezet, dus hello , HELLO en HeLLo zijn gelijk aan "hello" , maar niet naar "HELLO" of "HeLLo" (OEPS!).

Dus, bij het maken entiteiten (tabellen, weergaven, procedures, enz.) in PostgreSQL, moet u ze ofwel niet-geciteerd, ofwel tussen aanhalingstekens maar in kleine letters specificeren.

Om bestaande tabellen/views/etc te converteren kun je zoiets gebruiken als ALTER TABLE "FOO" RENAME TO "foo" .

Of probeer dump van MSSQL te wijzigen om het "PostgreSQL-compatibel" te maken (zodat het foo zal bevatten s of "foo" s maar niet "FOO" s).

  • Ofwel door het dumpbestand expliciet te bewerken. (Als je Linux gebruikt, kun je sed -r 's/"[^"]+"/\L\0/g' dumpfile — wees echter gewaarschuwd dat dit commando ook tekst in letterlijke tekenreeksen kan wijzigen.)
  • Of door enkele opties op te geven bij het ophalen van dump van MSSQL. (Ik weet niet zeker of er zulke opties zijn in MSSQL, ik heb het nooit gebruikt, maar waarschijnlijk zouden zulke opties moeten bestaan.)



  1. MySQL-standaarddatabase

  2. Android:onUpgrade belt niet bij database-upgrade

  3. Mysql:Selecteer alle gegevens tussen twee datums

  4. Een MySQL-database maken in cPanel