--- title: Range --- ## Basic Usage Finds documents containing a term that falls within a specified range of values. ```sql Function Syntax SELECT description, rating, category FROM mock_items WHERE id @@@ paradedb.range( field => 'rating', range => int4range(1, 3, '[)') ); ``` ```sql JSON Syntax SELECT description, rating, category FROM mock_items WHERE id @@@ '{ "range": { "field": "rating", "lower_bound": {"included": 1}, "upper_bound": {"excluded": 3} } }'::jsonb; ```
Specifies the field within the document to search for the term. A Postgres range specifying the range of values to match the field against. Range types include `int4range`, `int8range`, `daterange`, `tsrange`, and `tstzrange`. ## Inclusive vs. Exclusive Range The `range` argument accepts a Postgres [range type](https://www.postgresql.org/docs/current/rangetypes.html). An inclusive lower bound is represented by `[` while an exclusive lower bound is represented by `(`. Likewise, an inclusive upper bound is represented by `]`, while an exclusive upper bound is represented by `)`. For instance, the following query selects ratings between `1` and `3`, inclusive. ```sql Function Syntax SELECT description, rating, category FROM mock_items WHERE id @@@ paradedb.range( field => 'rating', range => int4range(1, 3, '[]') ); ``` ```sql JSON Syntax SELECT description, rating, category FROM mock_items WHERE id @@@ '{ "range": { "field": "rating", "lower_bound": {"included": 1}, "upper_bound": {"included": 3} } }'::jsonb; ``` ## Unbounded Range Passing `NULL` into either the upper or lower bound causes Postgres to treat the upper/lower bounds as positive/negative infinity. ```sql Function Syntax SELECT description, rating, category FROM mock_items WHERE id @@@ paradedb.range( field => 'rating', range => int4range(1, NULL, '[)') ); ``` ```sql JSON Syntax SELECT description, rating, category FROM mock_items WHERE id @@@ '{ "range": { "field": "rating", "lower_bound": {"included": 1}, "upper_bound": null } }'::jsonb; ```