PostgreSQLは舞台裏でタイプを自動的に把握しようとし、Linuxでは''を取り除こうとしていると思います。一部の比較もロケールに基づいています。
-
したがって、
' 2' > '10'
'2'>'10'
になります 比較は'2'>'1'
;それらは等しくないので、文字列の残りの部分、およびascii('2')
を続行する必要はありません。ascii('1')
より大きい 、したがって、trueと評価されます。 -
等価演算(例: '22' ='22')の場合、Postgresはバイトごとの比較を行うため、falseになります。エンジンは比較を行うときに2つの異なるアルゴリズムを使用するため、これは重要です。
-
型キャストを介してタイプを指定した場合、スペースルール(
' '=>''
)は上書きされません。 。
クレジットは次の場所にも適用されます: #postgresqlのRhodiumToadとPeerce