sql >> Databáze >  >> RDS >> Sqlserver

Postgres case Sensitivity

V PostgreSQL neoznačená jména nerozlišují malá a velká písmena. Tedy SELECT * FROM hello a SELECT * FROM HELLO jsou ekvivalentní.

U jmen v uvozovkách se však rozlišují velká a malá písmena. SELECT * FROM "hello" není ekvivalentní SELECT * FROM "HELLO" .

Aby se vytvořil "most" mezi jmény v uvozovkách a jmény v uvozovkách, jména v uvozovkách jsou implicitně malá, takže hello , HELLO a HeLLo jsou ekvivalentní "hello" , ale ne na "HELLO" nebo "HeLLo" (OOPS!).

Tedy při vytváření entity (tabulky, pohledy, procedury atd.) v PostgreSQL, měli byste je zadat buď bez uvozovek, nebo v uvozovkách s malými písmeny.

Chcete-li převést existující tabulky/pohledy/atd., můžete použít něco jako ALTER TABLE "FOO" RENAME TO "foo" .

Nebo zkuste upravit výpis z MSSQL tak, aby byl „kompatibilní s PostgreSQL“ (takže bude obsahovat foo s nebo "foo" s, ale ne "FOO" s).

  • Buď explicitní úpravou souboru výpisu. (Pokud používáte Linux, můžete použít sed -r 's/"[^"]+"/\L\0/g' dumpfile — upozorňujeme však, že tento příkaz může také upravit text v řetězcových literálech.)
  • Nebo zadáním některých možností při získávání výpisu z MSSQL. (Nejsem si jistý, jestli takové možnosti v MSSQL existují, nikdy jsem to nepoužil, ale pravděpodobně by takové možnosti měly existovat.)



  1. 5 věcí, které byste měli vědět o „Windows 10 S“

  2. Nejlepší způsob, jak hostovat MySQL v Azure Cloud

  3. 2 způsoby, jak vrátit název serveru v SQL Server (T-SQL)

  4. Jak mohu použít PDO k načtení pole výsledků v PHP?