# Range

SurrealDB range values are accessed through Value methods for start and end bounds.

SurrealDB range values represent a bounded interval. In the Java SDK, ranges are accessed through [`Value`](/docs/reference/java/api/values/value.md) methods that return the start and end bounds.

> [!NOTE]
> For record ID ranges used in CRUD operations (select, update, delete), see [`RecordIdRange`](/docs/reference/java/api/values/record-id.md#record-id-range).

---

## Value methods

### `.isRange()` {#is-range}

Checks if the value is a range.

```java title="Method Syntax"
value.isRange()
```

**Returns:** `boolean`

### `.getRangeStart()` {#get-range-start}

Returns the start bound of the range, if present.

```java title="Method Syntax"
value.getRangeStart()
```

**Returns:** `Optional<`[`Value`](/docs/reference/java/api/values/value.md)`>`

### `.getRangeEnd()` {#get-range-end}

Returns the end bound of the range, if present.

```java title="Method Syntax"
value.getRangeEnd()
```

**Returns:** `Optional<`[`Value`](/docs/reference/java/api/values/value.md)`>`

---

## Example

```java title="Working with range values"
import com.surrealdb.Surreal;
import com.surrealdb.Response;
import com.surrealdb.Value;
import com.surrealdb.signin.RootCredential;

try (Surreal db = new Surreal()) {
    db.connect("ws://localhost:8000");
    db.useNs("surrealdb").useDb("docs");
    db.signin(new RootCredential("root", "root"));

    Response response = db.query("RETURN 1..10");
    Value result = response.take(0);

    if (result.isRange()) {
        Optional<Value> start = result.getRangeStart();
        Optional<Value> end = result.getRangeEnd();
    }
}
```

---

## See also

- [Value types](/docs/reference/java/concepts/value-types.md) - Type mapping overview
- [Value](/docs/reference/java/api/values/value.md) - The Value class reference
- [RecordIdRange](/docs/reference/java/api/values/record-id.md#record-id-range) - Range-based CRUD operations
