Penso che PostgreSQL tenti automaticamente di capire il tipo dietro le quinte e in Linux cerchi di sbarazzarsi di '', alcuni dei confronti sono anche basati sulla locale.
-
Pertanto,
' 2' > '10'diventa'2'>'10'e il confronto è'2'>'1'; non sono uguali, quindi non è necessario continuare con il resto della stringa eascii('2')è maggiore diascii('1'), quindi restituisce true. -
Se fosse un'operazione di uguaglianza (ad es. ' 22' ='22 ') risulterebbe false perché Postgres esegue un confronto byte per byte. Questo è importante perché il motore utilizza due algoritmi diversi durante i confronti.
-
Se specifichi il tipo tramite typecasting, non sovrascriverà le regole dello spazio (
' '=>'').
Il merito va anche a: RhodiumToad e Peerce in #postgresql