sql >> Databáze >  >> RDS >> PostgreSQL

Proč je '2'> '10'?

Myslím, že PostgreSQL se automaticky snaží zjistit typ v zákulisí a v Linuxu se snaží zbavit ' ', některá srovnání jsou také založena na národním prostředí.

  • Tedy ' 2' > '10' se změní na '2'>'10' a porovnání je '2'>'1'; nejsou stejné, takže není třeba pokračovat se zbytkem řetězce a ascii('2') je větší než ascii('1') , takže se vyhodnotí jako true.

  • Pokud by se jednalo o operaci rovnosti (např. '22' ='22'), výsledkem by byla nepravda, protože Postgres provádí porovnávání bajt po byte. To je důležité, protože motor používá při porovnávání dva různé algoritmy.

  • Pokud zadáte typ pomocí přetypování, nepřepíše pravidla mezer (' '=>'' ).

Poděkování patří také: RhodiumToad a Peerce v #postgresql



  1. Rozdíl mezi omezeními Inline a Out-of-Line

  2. Oracle 11g - Jak optimalizovat výběr pomalé paralelní vložky?

  3. PHP vložení PDO pomocí smyčky

  4. Existuje nějaký bezpečný způsob, jak parametrizovat názvy databází v dotazech MySQL?