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