しかし、そうではありません。 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 範囲のドメイン内の値としては扱われません。これは、「無制限」と言うのに便利な構文として機能します。それ以上ではありません。