sql >> Database >  >> RDS >> PostgreSQL

Waarom is '2'> '10'?

Ik denk dat PostgreSQL automatisch achter de schermen probeert het type te achterhalen en in Linux probeert het de ' ' te verwijderen, sommige vergelijkingen zijn ook gebaseerd op de landinstelling.

  • Dus ' 2' > '10' wordt '2'>'10' en de vergelijking is '2'>'1'; ze zijn niet gelijk, dus het is niet nodig om verder te gaan met de rest van de string, en ascii('2') is groter dan ascii('1') , dus het evalueert naar waar.

  • Als het een gelijkheidsbewerking zou zijn (bijv. ' 22' ='22 '), zou het resulteren in false omdat Postgres een byte-byte-vergelijking doet. Dit is belangrijk omdat de engine twee verschillende algoritmen gebruikt bij het vergelijken.

  • Als u het type opgeeft via typecasting, overschrijft het de regels voor de ruimte niet (' '=>'' ).

Het tegoed gaat ook naar: RhodiumToad en Peerce in #postgresql



  1. hoe gegevens ophalen uit drie of meer tabellen?

  2. Dynamische actie vernieuw alle rapporten op een pagina

  3. Mysql haalt alle rijen met limiet op

  4. Hoe pgAdmin 4 te installeren op Ubuntu 20.04/18.04/16.04