sql >> Databasteknik >  >> RDS >> PostgreSQL

Varför är '2'> '10'?

Jag tror att PostgreSQL automatiskt försöker ta reda på typen bakom kulisserna och i Linux försöker den bli av med ' ', några av jämförelserna är också baserade på lokalitet.

  • Alltså ' 2' > '10' blir '2'>'10' och jämförelsen är '2'>'1'; de är inte lika, så du behöver inte fortsätta med resten av strängen och ascii('2') är större än ascii('1') , så det utvärderas till sant.

  • Om det vore en likhetsoperation (t.ex. ' 22' ='22 ') skulle det resultera i falskt eftersom Postgres gör en byte för byte-jämförelse. Detta är viktigt eftersom motorn använder två olika algoritmer när de gör jämförelser.

  • Om du anger typen via typecasting kommer den inte att åsidosätta utrymmesreglerna (' '=>'' ).

Också kredit går till: RhodiumToad och Peerce i #postgresql



  1. SQL-fråga som returnerar alla datum som inte används i en tabell

  2. PostgreSQL hittar alla möjliga kombinationer (permutationer) i rekursiv fråga

  3. Hur man kontrollerar om en användare klickade på [Avbryt] på en InputBox i VBA

  4. Hur kan jag sätta IF ELSE CONDITION i Oracle-frågan?