Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Rozróżnianie wielkości liter w Postgres

W PostgreSQL w nazwach niecytowanych nie jest rozróżniana wielkość liter. Zatem SELECT * FROM hello i SELECT * FROM HELLO są równoważne.

Jednak w nazwach cytowanych wielkość liter jest rozróżniana. SELECT * FROM "hello" jest nie odpowiednik SELECT * FROM "HELLO" .

Aby stworzyć "most" między nazwami w cudzysłowie i nazwami bez cudzysłowów, nazwy bez cudzysłowów są domyślnie pisane małymi literami, stąd hello , HELLO i HeLLo są równoważne z "hello" , ale nie do "HELLO" lub "HeLLo" (UPS!).

Dlatego podczas tworzenia encje (tabele, widoki, procedury itp.) w PostgreSQL, powinieneś określić je jako niecytowane lub w cudzysłowie, ale z małymi literami.

Aby przekonwertować istniejące tabele/widoki/itp., możesz użyć czegoś takiego jak ALTER TABLE "FOO" RENAME TO "foo" .

Lub spróbuj zmodyfikować zrzut z MSSQL, aby był „zgodny z PostgreSQL” (tak, aby zawierał foo s lub "foo" s, ale nie "FOO" s).

  • Albo przez jawną edycję pliku zrzutu. (Jeśli używasz Linuksa, możesz wykonać sed -r 's/"[^"]+"/\L\0/g' dumpfile — należy jednak pamiętać, że to polecenie może również modyfikować tekst w literałach łańcuchowych.)
  • Lub określając niektóre opcje podczas pobierania zrzutu z MSSQL. (Nie jestem pewien, czy są takie opcje w MSSQL, nigdy ich nie używałem, ale prawdopodobnie takie opcje powinny istnieć.)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dlaczego nie ma funkcji okienkowych w klauzulach where?

  2. Jak uzyskać wartości, które nie zawierają liczb w SQL Server?

  3. Obliczanie wartości przy użyciu poprzedniej wartości wiersza w T-SQL

  4. Jak znaleźć domyślną lokalizację plików danych i plików dziennika w programie SQL Server?

  5. Jak określić numer portu w parametrach połączenia programu SQL Server?