sql >> Database teknologi >  >> RDS >> PostgreSQL

Hvorfor er '2'> '10'?

Jeg tror, ​​at PostgreSQL automatisk forsøger at finde ud af typen bag kulisserne, og i Linux forsøger den at slippe af med ' ', nogle af sammenligningerne er også baseret på lokalitet.

  • Således ' 2' > '10' bliver '2'>'10' og sammenligningen er '2'>'1'; de er ikke ens, så det er ikke nødvendigt at fortsætte med resten af ​​strengen og ascii('2') er større end ascii('1') , så det vurderes til at være sandt.

  • Hvis det var en lighedsoperation (f.eks. ' 22' ='22 '), ville det resultere i falsk, fordi Postgres foretager en byte for byte-sammenligning. Dette er vigtigt, fordi motoren bruger to forskellige algoritmer, når de foretager sammenligninger.

  • Hvis du angiver typen via typecasting, vil den ikke tilsidesætte pladsreglerne (' '=>'' ).

Også kredit går til: RhodiumToad og Peerce i #postgresql



  1. Hvordan fjerner du dubletter fra kommasepareret liste med regexp_replace i Oracle?

  2. SQL samme enhed mellem to tabeller skal have ordensnumre i 1 celle

  3. side for hver række i mysql

  4. MySQL-koncepter:session vs forbindelse