sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Por qué es '2'> '10'?

Creo que PostgreSQL automáticamente intenta descubrir el tipo detrás de escena y en Linux intenta deshacerse del '', algunas de las comparaciones también se basan en la configuración regional.

  • Así, ' 2' > '10' se convierte en '2'>'10' y la comparación es '2'>'1'; no son iguales, por lo que no es necesario continuar con el resto de la cadena y ascii('2') es mayor que ascii('1') , por lo que se evalúa como verdadero.

  • Si fuera una operación de igualdad (por ejemplo, '22' ='22') resultaría falso porque Postgres hace una comparación byte por byte. Esto es importante porque el motor usa dos algoritmos diferentes al hacer comparaciones.

  • Si especifica el tipo a través de encasillamiento, entonces no anulará las reglas de espacio (' '=>'' ).

También el crédito es para: RhodiumToad y Peerce en #postgresql