# BSON\_EXTRACT\_DOUBLE

Extracts the numeric value for the specified key from the BSON data, converts it to the SingleStore `DOUBLE` type, and returns the value.

## Syntax

```
BSON_EXTRACT_DOUBLE(<input> [, path_key_1, path_key_2,.., path_key_n])
```

## Arguments

* `<input>`: A valid BSON document or an expression that evaluates to a valid BSON document.
* `<path>`: A comma-separated list of dictionary keys or array positions (zero-based index).

## Return Type

SingleStore `DOUBLE` type.

## Remarks

* The BSON `INT32`, `INT64`, and `DOUBLE` (except `NaN`, +infinity, or -infinity) types are returned as is.
* BSON `DECIMAL128` type is typecast using the [Intel RDFP Library](https://www.intel.com/content/www/us/en/developer/articles/tool/intel-decimal-floating-point-math-library.html). If the converted value is out of range, `NULL` is returned.
* Returns `NULL` if:

  * The extracted value is out of range, a non-numeric BSON type, `NaN`, +infinity, or -infinity.
  * The specified path does not exist.

## Examples

**Note**: The following examples explicitly cast string to BSON for clarity.

The following example extracts a BSON `INT32` type:

```sql
SELECT BSON_EXTRACT_DOUBLE('{"a":{"b":10}}':>BSON, 'a', 'b') AS Result;

```

```output

+--------+
| Result |
+--------+
|     10 |
+--------+
```

The following example extracts a BSON `INT64` type:

```sql
SELECT BSON_EXTRACT_DOUBLE('{"a":{"b":{"$numberLong":"10"}}}':>BSON, 'a', 'b') AS Result;

```

```output

+--------+
| Result |
+--------+
|     10 |
+--------+
```

The following examples extract a BSON `DOUBLE` type:

```sql
SELECT BSON_EXTRACT_DOUBLE('{"a":{"b":{"$numberDouble":"922337203685477586.9"}}}':>BSON, 'a', 'b') AS Result; 

```

```output

+----------------------+
| Result               |
+----------------------+
| 9.223372036854776e17 |
+----------------------+
```

```sql
SELECT BSON_EXTRACT_DOUBLE('{"a":{"b":{"$numberDouble":"NaN"}}}':>BSON, 'a', 'b') AS Result; 

```

```output

+--------+
| Result |
+--------+
|   NULL |
+--------+

```

The following example extracts a BSON `DECIMAL` type:

```sql
SELECT BSON_EXTRACT_DOUBLE('{"a":{"b":{"$numberDecimal":"-9223372036854775807.9"}}}':>BSON, 'a', 'b')AS Result; 

```

```output

+-----------------------+
| Result                |
+-----------------------+
| -9.223372036854776e18 |
+-----------------------+
```

***

Modified at: April 3, 2024

Source: [/db/v9.1/reference/sql-reference/bson-functions/bson-extract-double/](https://docs.singlestore.com/db/v9.1/reference/sql-reference/bson-functions/bson-extract-double/)

(An index of the documentation is available at /llms.txt)
