postgresqlの「BETWEEN」と「OVERLAPS」の違いは何ですか?
例を挙げていただけますか?オーバーラップ構文 (NULL, x) OVERLAPS (?, ?) で NULL 値を持つことは可能ですか?
postgresqlの「BETWEEN」と「OVERLAPS」の違いは何ですか?
例を挙げていただけますか?オーバーラップ構文 (NULL, x) OVERLAPS (?, ?) で NULL 値を持つことは可能ですか?
a、b、c の整数a between b and c
は、平易な英語での意味を意味します。
b <= a and a <= c
a、b、c、d の整数は[a,b] overlaps [c,d]
、共通の要素があることを意味します。
not(b <= c) and not(d <= a)
(オーバーラップを処理するときは注意が必要です。)
範囲型を扱う場合、null 値は無限を意味します。
例:
denis=# select int4range(-1, 0), int4range(0, 1);
int4range | int4range
-----------+-----------
[-1,0) | [0,1)
(1 row)
denis=# select int4range(null, 0), int4range(0, null);
int4range | int4range
-----------+-----------
(,0) | [0,)
(1 row)
denis=# select int4range(null, 0) && int4range(0, null) as test;
test
------
f
(1 row)
denis=# select int4range(null, 1) && int4range(0, null) as test;
test
------
t
(1 row)