しかし、そうではありません。 NULL
構文の利便性です 範囲の境界として使用される場合、-infinity
/infinity
実際の値です 範囲のドメインで。抽象値は、他のどの値よりも小さい/大きいことを意味しますが、値 それでも(含めることも除外することもできます)。
また、NULL
すべてで機能します 範囲タイプ。ほとんどのデータタイプには、-infinity
のような特別な値はありません。 /infinity
。 integer
を取る およびint4range
たとえば。
理解を深めるために、pgsql-generalのa_horseが提供されました :
すべて データ型はNULL
にすることができます 、明示的にNOT NULL
であるドメインも 。参照:
これにはdate
が含まれます もちろん(エイドリアンのコメント
):
test=> SELECT NULL::date, pg_typeof(NULL::date);
date | pg_typeof
------+-----------
| date
(1 row)
しかし、NULL
について議論しようとしています 値として (範囲の境界として使用される場合)は、そもそも誤解を招くアプローチです。値ではありません。
繰り返しますが、NULL
範囲のドメイン内の値としては扱われません。これは、「無制限」と言うのに便利な構文として機能します。それ以上ではありません。