---
layout: docu
redirect_from:
- /docs/api/c/value
- /docs/api/c/value/
- /docs/clients/c/value
title: Values
---

<!-- markdownlint-disable MD001 -->

The value class represents a single value of any type.

## API Reference Overview

<!-- This section is generated by scripts/generate_c_api_docs.py -->

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <a href="#duckdb_destroy_value"><span class="nf">duckdb_destroy_value</span></a>(<span class="kt">duckdb_value</span> *<span class="nv">value</span>);
<span class="kt">duckdb_value</span> <a href="#duckdb_create_varchar"><span class="nf">duckdb_create_varchar</span></a>(<span class="kt">const</span> <span class="kt">char</span> *<span class="nv">text</span>);
<span class="kt">duckdb_value</span> <a href="#duckdb_create_varchar_length"><span class="nf">duckdb_create_varchar_length</span></a>(<span class="kt">const</span> <span class="kt">char</span> *<span class="nv">text</span>, <span class="kt">idx_t</span> <span class="nv">length</span>);
<span class="kt">duckdb_value</span> <a href="#duckdb_create_bool"><span class="nf">duckdb_create_bool</span></a>(<span class="kt">bool</span> <span class="nv">input</span>);
<span class="kt">duckdb_value</span> <a href="#duckdb_create_int8"><span class="nf">duckdb_create_int8</span></a>(<span class="kt">int8_t</span> <span class="nv">input</span>);
<span class="kt">duckdb_value</span> <a href="#duckdb_create_uint8"><span class="nf">duckdb_create_uint8</span></a>(<span class="kt">uint8_t</span> <span class="nv">input</span>);
<span class="kt">duckdb_value</span> <a href="#duckdb_create_int16"><span class="nf">duckdb_create_int16</span></a>(<span class="kt">int16_t</span> <span class="nv">input</span>);
<span class="kt">duckdb_value</span> <a href="#duckdb_create_uint16"><span class="nf">duckdb_create_uint16</span></a>(<span class="kt">uint16_t</span> <span class="nv">input</span>);
<span class="kt">duckdb_value</span> <a href="#duckdb_create_int32"><span class="nf">duckdb_create_int32</span></a>(<span class="kt">int32_t</span> <span class="nv">input</span>);
<span class="kt">duckdb_value</span> <a href="#duckdb_create_uint32"><span class="nf">duckdb_create_uint32</span></a>(<span class="kt">uint32_t</span> <span class="nv">input</span>);
<span class="kt">duckdb_value</span> <a href="#duckdb_create_uint64"><span class="nf">duckdb_create_uint64</span></a>(<span class="kt">uint64_t</span> <span class="nv">input</span>);
<span class="kt">duckdb_value</span> <a href="#duckdb_create_int64"><span class="nf">duckdb_create_int64</span></a>(<span class="kt">int64_t</span> <span class="nv">val</span>);
<span class="kt">duckdb_value</span> <a href="#duckdb_create_hugeint"><span class="nf">duckdb_create_hugeint</span></a>(<span class="kt">duckdb_hugeint</span> <span class="nv">input</span>);
<span class="kt">duckdb_value</span> <a href="#duckdb_create_uhugeint"><span class="nf">duckdb_create_uhugeint</span></a>(<span class="kt">duckdb_uhugeint</span> <span class="nv">input</span>);
<span class="kt">duckdb_value</span> <a href="#duckdb_create_varint"><span class="nf">duckdb_create_varint</span></a>(<span class="nv">duckdb_varint</span> <span class="nv">input</span>);
<span class="kt">duckdb_value</span> <a href="#duckdb_create_decimal"><span class="nf">duckdb_create_decimal</span></a>(<span class="kt">duckdb_decimal</span> <span class="nv">input</span>);
<span class="kt">duckdb_value</span> <a href="#duckdb_create_float"><span class="nf">duckdb_create_float</span></a>(<span class="kt">float</span> <span class="nv">input</span>);
<span class="kt">duckdb_value</span> <a href="#duckdb_create_double"><span class="nf">duckdb_create_double</span></a>(<span class="kt">double</span> <span class="nv">input</span>);
<span class="kt">duckdb_value</span> <a href="#duckdb_create_date"><span class="nf">duckdb_create_date</span></a>(<span class="kt">duckdb_date</span> <span class="nv">input</span>);
<span class="kt">duckdb_value</span> <a href="#duckdb_create_time"><span class="nf">duckdb_create_time</span></a>(<span class="kt">duckdb_time</span> <span class="nv">input</span>);
<span class="kt">duckdb_value</span> <a href="#duckdb_create_time_tz_value"><span class="nf">duckdb_create_time_tz_value</span></a>(<span class="kt">duckdb_time_tz</span> <span class="nv">value</span>);
<span class="kt">duckdb_value</span> <a href="#duckdb_create_timestamp"><span class="nf">duckdb_create_timestamp</span></a>(<span class="kt">duckdb_timestamp</span> <span class="nv">input</span>);
<span class="kt">duckdb_value</span> <a href="#duckdb_create_timestamp_tz"><span class="nf">duckdb_create_timestamp_tz</span></a>(<span class="kt">duckdb_timestamp</span> <span class="nv">input</span>);
<span class="kt">duckdb_value</span> <a href="#duckdb_create_timestamp_s"><span class="nf">duckdb_create_timestamp_s</span></a>(<span class="nv">duckdb_timestamp_s</span> <span class="nv">input</span>);
<span class="kt">duckdb_value</span> <a href="#duckdb_create_timestamp_ms"><span class="nf">duckdb_create_timestamp_ms</span></a>(<span class="nv">duckdb_timestamp_ms</span> <span class="nv">input</span>);
<span class="kt">duckdb_value</span> <a href="#duckdb_create_timestamp_ns"><span class="nf">duckdb_create_timestamp_ns</span></a>(<span class="nv">duckdb_timestamp_ns</span> <span class="nv">input</span>);
<span class="kt">duckdb_value</span> <a href="#duckdb_create_interval"><span class="nf">duckdb_create_interval</span></a>(<span class="kt">duckdb_interval</span> <span class="nv">input</span>);
<span class="kt">duckdb_value</span> <a href="#duckdb_create_blob"><span class="nf">duckdb_create_blob</span></a>(<span class="kt">const</span> <span class="kt">uint8_t</span> *<span class="nv">data</span>, <span class="kt">idx_t</span> <span class="nv">length</span>);
<span class="kt">duckdb_value</span> <a href="#duckdb_create_bit"><span class="nf">duckdb_create_bit</span></a>(<span class="nv">duckdb_bit</span> <span class="nv">input</span>);
<span class="kt">duckdb_value</span> <a href="#duckdb_create_uuid"><span class="nf">duckdb_create_uuid</span></a>(<span class="kt">duckdb_uhugeint</span> <span class="nv">input</span>);
<span class="kt">bool</span> <a href="#duckdb_get_bool"><span class="nf">duckdb_get_bool</span></a>(<span class="kt">duckdb_value</span> <span class="nv">val</span>);
<span class="kt">int8_t</span> <a href="#duckdb_get_int8"><span class="nf">duckdb_get_int8</span></a>(<span class="kt">duckdb_value</span> <span class="nv">val</span>);
<span class="kt">uint8_t</span> <a href="#duckdb_get_uint8"><span class="nf">duckdb_get_uint8</span></a>(<span class="kt">duckdb_value</span> <span class="nv">val</span>);
<span class="kt">int16_t</span> <a href="#duckdb_get_int16"><span class="nf">duckdb_get_int16</span></a>(<span class="kt">duckdb_value</span> <span class="nv">val</span>);
<span class="kt">uint16_t</span> <a href="#duckdb_get_uint16"><span class="nf">duckdb_get_uint16</span></a>(<span class="kt">duckdb_value</span> <span class="nv">val</span>);
<span class="kt">int32_t</span> <a href="#duckdb_get_int32"><span class="nf">duckdb_get_int32</span></a>(<span class="kt">duckdb_value</span> <span class="nv">val</span>);
<span class="kt">uint32_t</span> <a href="#duckdb_get_uint32"><span class="nf">duckdb_get_uint32</span></a>(<span class="kt">duckdb_value</span> <span class="nv">val</span>);
<span class="kt">int64_t</span> <a href="#duckdb_get_int64"><span class="nf">duckdb_get_int64</span></a>(<span class="kt">duckdb_value</span> <span class="nv">val</span>);
<span class="kt">uint64_t</span> <a href="#duckdb_get_uint64"><span class="nf">duckdb_get_uint64</span></a>(<span class="kt">duckdb_value</span> <span class="nv">val</span>);
<span class="kt">duckdb_hugeint</span> <a href="#duckdb_get_hugeint"><span class="nf">duckdb_get_hugeint</span></a>(<span class="kt">duckdb_value</span> <span class="nv">val</span>);
<span class="kt">duckdb_uhugeint</span> <a href="#duckdb_get_uhugeint"><span class="nf">duckdb_get_uhugeint</span></a>(<span class="kt">duckdb_value</span> <span class="nv">val</span>);
<span class="nv">duckdb_varint</span> <a href="#duckdb_get_varint"><span class="nf">duckdb_get_varint</span></a>(<span class="kt">duckdb_value</span> <span class="nv">val</span>);
<span class="kt">duckdb_decimal</span> <a href="#duckdb_get_decimal"><span class="nf">duckdb_get_decimal</span></a>(<span class="kt">duckdb_value</span> <span class="nv">val</span>);
<span class="kt">float</span> <a href="#duckdb_get_float"><span class="nf">duckdb_get_float</span></a>(<span class="kt">duckdb_value</span> <span class="nv">val</span>);
<span class="kt">double</span> <a href="#duckdb_get_double"><span class="nf">duckdb_get_double</span></a>(<span class="kt">duckdb_value</span> <span class="nv">val</span>);
<span class="kt">duckdb_date</span> <a href="#duckdb_get_date"><span class="nf">duckdb_get_date</span></a>(<span class="kt">duckdb_value</span> <span class="nv">val</span>);
<span class="kt">duckdb_time</span> <a href="#duckdb_get_time"><span class="nf">duckdb_get_time</span></a>(<span class="kt">duckdb_value</span> <span class="nv">val</span>);
<span class="kt">duckdb_time_tz</span> <a href="#duckdb_get_time_tz"><span class="nf">duckdb_get_time_tz</span></a>(<span class="kt">duckdb_value</span> <span class="nv">val</span>);
<span class="kt">duckdb_timestamp</span> <a href="#duckdb_get_timestamp"><span class="nf">duckdb_get_timestamp</span></a>(<span class="kt">duckdb_value</span> <span class="nv">val</span>);
<span class="kt">duckdb_timestamp</span> <a href="#duckdb_get_timestamp_tz"><span class="nf">duckdb_get_timestamp_tz</span></a>(<span class="kt">duckdb_value</span> <span class="nv">val</span>);
<span class="nv">duckdb_timestamp_s</span> <a href="#duckdb_get_timestamp_s"><span class="nf">duckdb_get_timestamp_s</span></a>(<span class="kt">duckdb_value</span> <span class="nv">val</span>);
<span class="nv">duckdb_timestamp_ms</span> <a href="#duckdb_get_timestamp_ms"><span class="nf">duckdb_get_timestamp_ms</span></a>(<span class="kt">duckdb_value</span> <span class="nv">val</span>);
<span class="nv">duckdb_timestamp_ns</span> <a href="#duckdb_get_timestamp_ns"><span class="nf">duckdb_get_timestamp_ns</span></a>(<span class="kt">duckdb_value</span> <span class="nv">val</span>);
<span class="kt">duckdb_interval</span> <a href="#duckdb_get_interval"><span class="nf">duckdb_get_interval</span></a>(<span class="kt">duckdb_value</span> <span class="nv">val</span>);
<span class="kt">duckdb_logical_type</span> <a href="#duckdb_get_value_type"><span class="nf">duckdb_get_value_type</span></a>(<span class="kt">duckdb_value</span> <span class="nv">val</span>);
<span class="kt">duckdb_blob</span> <a href="#duckdb_get_blob"><span class="nf">duckdb_get_blob</span></a>(<span class="kt">duckdb_value</span> <span class="nv">val</span>);
<span class="nv">duckdb_bit</span> <a href="#duckdb_get_bit"><span class="nf">duckdb_get_bit</span></a>(<span class="kt">duckdb_value</span> <span class="nv">val</span>);
<span class="kt">duckdb_uhugeint</span> <a href="#duckdb_get_uuid"><span class="nf">duckdb_get_uuid</span></a>(<span class="kt">duckdb_value</span> <span class="nv">val</span>);
<span class="kt">char</span> *<a href="#duckdb_get_varchar"><span class="nf">duckdb_get_varchar</span></a>(<span class="kt">duckdb_value</span> <span class="nv">value</span>);
<span class="kt">duckdb_value</span> <a href="#duckdb_create_struct_value"><span class="nf">duckdb_create_struct_value</span></a>(<span class="kt">duckdb_logical_type</span> <span class="nv">type</span>, <span class="kt">duckdb_value</span> *<span class="nv">values</span>);
<span class="kt">duckdb_value</span> <a href="#duckdb_create_list_value"><span class="nf">duckdb_create_list_value</span></a>(<span class="kt">duckdb_logical_type</span> <span class="nv">type</span>, <span class="kt">duckdb_value</span> *<span class="nv">values</span>, <span class="kt">idx_t</span> <span class="nv">value_count</span>);
<span class="kt">duckdb_value</span> <a href="#duckdb_create_array_value"><span class="nf">duckdb_create_array_value</span></a>(<span class="kt">duckdb_logical_type</span> <span class="nv">type</span>, <span class="kt">duckdb_value</span> *<span class="nv">values</span>, <span class="kt">idx_t</span> <span class="nv">value_count</span>);
<span class="kt">idx_t</span> <a href="#duckdb_get_map_size"><span class="nf">duckdb_get_map_size</span></a>(<span class="kt">duckdb_value</span> <span class="nv">value</span>);
<span class="kt">duckdb_value</span> <a href="#duckdb_get_map_key"><span class="nf">duckdb_get_map_key</span></a>(<span class="kt">duckdb_value</span> <span class="nv">value</span>, <span class="kt">idx_t</span> <span class="nv">index</span>);
<span class="kt">duckdb_value</span> <a href="#duckdb_get_map_value"><span class="nf">duckdb_get_map_value</span></a>(<span class="kt">duckdb_value</span> <span class="nv">value</span>, <span class="kt">idx_t</span> <span class="nv">index</span>);
<span class="kt">bool</span> <a href="#duckdb_is_null_value"><span class="nf">duckdb_is_null_value</span></a>(<span class="kt">duckdb_value</span> <span class="nv">value</span>);
<span class="kt">duckdb_value</span> <a href="#duckdb_create_null_value"><span class="nf">duckdb_create_null_value</span></a>();
<span class="kt">idx_t</span> <a href="#duckdb_get_list_size"><span class="nf">duckdb_get_list_size</span></a>(<span class="kt">duckdb_value</span> <span class="nv">value</span>);
<span class="kt">duckdb_value</span> <a href="#duckdb_get_list_child"><span class="nf">duckdb_get_list_child</span></a>(<span class="kt">duckdb_value</span> <span class="nv">value</span>, <span class="kt">idx_t</span> <span class="nv">index</span>);
<span class="kt">duckdb_value</span> <a href="#duckdb_create_enum_value"><span class="nf">duckdb_create_enum_value</span></a>(<span class="kt">duckdb_logical_type</span> <span class="nv">type</span>, <span class="kt">uint64_t</span> <span class="nv">value</span>);
<span class="kt">uint64_t</span> <a href="#duckdb_get_enum_value"><span class="nf">duckdb_get_enum_value</span></a>(<span class="kt">duckdb_value</span> <span class="nv">value</span>);
<span class="kt">duckdb_value</span> <a href="#duckdb_get_struct_child"><span class="nf">duckdb_get_struct_child</span></a>(<span class="kt">duckdb_value</span> <span class="nv">value</span>, <span class="kt">idx_t</span> <span class="nv">index</span>);
</code></pre></div></div>

#### `duckdb_destroy_value`

Destroys the value and de-allocates all memory allocated for that type.

##### Syntax

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="nv">duckdb_destroy_value</span>(<span class="nv">
</span>  <span class="kt">duckdb_value</span> *<span class="nv">value
</span>);
</code></pre></div></div>

##### Parameters

* `value`: The value to destroy.

<br>

#### `duckdb_create_varchar`

Creates a value from a null-terminated string

##### Syntax

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_create_varchar</span>(<span class="nv">
</span>  <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">text
</span>);
</code></pre></div></div>

##### Parameters

* `text`: The null-terminated string

##### Return Value

The value. This must be destroyed with `duckdb_destroy_value`.

<br>

#### `duckdb_create_varchar_length`

Creates a value from a string

##### Syntax

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_create_varchar_length</span>(<span class="nv">
</span>  <span class="kt">const</span> <span class="kt">char</span> *<span class="nv">text</span>,<span class="nv">
</span>  <span class="kt">idx_t</span> <span class="nv">length
</span>);
</code></pre></div></div>

##### Parameters

* `text`: The text
* `length`: The length of the text

##### Return Value

The value. This must be destroyed with `duckdb_destroy_value`.

<br>

#### `duckdb_create_bool`

Creates a value from a boolean

##### Syntax

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_create_bool</span>(<span class="nv">
</span>  <span class="kt">bool</span> <span class="nv">input
</span>);
</code></pre></div></div>

##### Parameters

* `input`: The boolean value

##### Return Value

The value. This must be destroyed with `duckdb_destroy_value`.

<br>

#### `duckdb_create_int8`

Creates a value from a int8_t (a tinyint)

##### Syntax

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_create_int8</span>(<span class="nv">
</span>  <span class="kt">int8_t</span> <span class="nv">input
</span>);
</code></pre></div></div>

##### Parameters

* `input`: The tinyint value

##### Return Value

The value. This must be destroyed with `duckdb_destroy_value`.

<br>

#### `duckdb_create_uint8`

Creates a value from a uint8_t (a utinyint)

##### Syntax

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_create_uint8</span>(<span class="nv">
</span>  <span class="kt">uint8_t</span> <span class="nv">input
</span>);
</code></pre></div></div>

##### Parameters

* `input`: The utinyint value

##### Return Value

The value. This must be destroyed with `duckdb_destroy_value`.

<br>

#### `duckdb_create_int16`

Creates a value from a int16_t (a smallint)

##### Syntax

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_create_int16</span>(<span class="nv">
</span>  <span class="kt">int16_t</span> <span class="nv">input
</span>);
</code></pre></div></div>

##### Parameters

* `input`: The smallint value

##### Return Value

The value. This must be destroyed with `duckdb_destroy_value`.

<br>

#### `duckdb_create_uint16`

Creates a value from a uint16_t (a usmallint)

##### Syntax

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_create_uint16</span>(<span class="nv">
</span>  <span class="kt">uint16_t</span> <span class="nv">input
</span>);
</code></pre></div></div>

##### Parameters

* `input`: The usmallint value

##### Return Value

The value. This must be destroyed with `duckdb_destroy_value`.

<br>

#### `duckdb_create_int32`

Creates a value from a int32_t (an integer)

##### Syntax

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_create_int32</span>(<span class="nv">
</span>  <span class="kt">int32_t</span> <span class="nv">input
</span>);
</code></pre></div></div>

##### Parameters

* `input`: The integer value

##### Return Value

The value. This must be destroyed with `duckdb_destroy_value`.

<br>

#### `duckdb_create_uint32`

Creates a value from a uint32_t (a uinteger)

##### Syntax

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_create_uint32</span>(<span class="nv">
</span>  <span class="kt">uint32_t</span> <span class="nv">input
</span>);
</code></pre></div></div>

##### Parameters

* `input`: The uinteger value

##### Return Value

The value. This must be destroyed with `duckdb_destroy_value`.

<br>

#### `duckdb_create_uint64`

Creates a value from a uint64_t (a ubigint)

##### Syntax

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_create_uint64</span>(<span class="nv">
</span>  <span class="kt">uint64_t</span> <span class="nv">input
</span>);
</code></pre></div></div>

##### Parameters

* `input`: The ubigint value

##### Return Value

The value. This must be destroyed with `duckdb_destroy_value`.

<br>

#### `duckdb_create_int64`

Creates a value from an int64


##### Return Value

The value. This must be destroyed with `duckdb_destroy_value`.

##### Syntax

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_create_int64</span>(<span class="nv">
</span>  <span class="kt">int64_t</span> <span class="nv">val
</span>);
</code></pre></div></div>
<br>

#### `duckdb_create_hugeint`

Creates a value from a hugeint

##### Syntax

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_create_hugeint</span>(<span class="nv">
</span>  <span class="kt">duckdb_hugeint</span> <span class="nv">input
</span>);
</code></pre></div></div>

##### Parameters

* `input`: The hugeint value

##### Return Value

The value. This must be destroyed with `duckdb_destroy_value`.

<br>

#### `duckdb_create_uhugeint`

Creates a value from a uhugeint

##### Syntax

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_create_uhugeint</span>(<span class="nv">
</span>  <span class="kt">duckdb_uhugeint</span> <span class="nv">input
</span>);
</code></pre></div></div>

##### Parameters

* `input`: The uhugeint value

##### Return Value

The value. This must be destroyed with `duckdb_destroy_value`.

<br>

#### `duckdb_create_varint`

Creates a VARINT value from a duckdb_varint

##### Syntax

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_create_varint</span>(<span class="nv">
</span>  <span class="nv">duckdb_varint</span> <span class="nv">input
</span>);
</code></pre></div></div>

##### Parameters

* `input`: The duckdb_varint value

##### Return Value

The value. This must be destroyed with `duckdb_destroy_value`.

<br>

#### `duckdb_create_decimal`

Creates a DECIMAL value from a duckdb_decimal

##### Syntax

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_create_decimal</span>(<span class="nv">
</span>  <span class="kt">duckdb_decimal</span> <span class="nv">input
</span>);
</code></pre></div></div>

##### Parameters

* `input`: The duckdb_decimal value

##### Return Value

The value. This must be destroyed with `duckdb_destroy_value`.

<br>

#### `duckdb_create_float`

Creates a value from a float

##### Syntax

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_create_float</span>(<span class="nv">
</span>  <span class="kt">float</span> <span class="nv">input
</span>);
</code></pre></div></div>

##### Parameters

* `input`: The float value

##### Return Value

The value. This must be destroyed with `duckdb_destroy_value`.

<br>

#### `duckdb_create_double`

Creates a value from a double

##### Syntax

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_create_double</span>(<span class="nv">
</span>  <span class="kt">double</span> <span class="nv">input
</span>);
</code></pre></div></div>

##### Parameters

* `input`: The double value

##### Return Value

The value. This must be destroyed with `duckdb_destroy_value`.

<br>

#### `duckdb_create_date`

Creates a value from a date

##### Syntax

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_create_date</span>(<span class="nv">
</span>  <span class="kt">duckdb_date</span> <span class="nv">input
</span>);
</code></pre></div></div>

##### Parameters

* `input`: The date value

##### Return Value

The value. This must be destroyed with `duckdb_destroy_value`.

<br>

#### `duckdb_create_time`

Creates a value from a time

##### Syntax

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_create_time</span>(<span class="nv">
</span>  <span class="kt">duckdb_time</span> <span class="nv">input
</span>);
</code></pre></div></div>

##### Parameters

* `input`: The time value

##### Return Value

The value. This must be destroyed with `duckdb_destroy_value`.

<br>

#### `duckdb_create_time_tz_value`

Creates a value from a time_tz.
Not to be confused with `duckdb_create_time_tz`, which creates a duckdb_time_tz_t.

##### Syntax

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_create_time_tz_value</span>(<span class="nv">
</span>  <span class="kt">duckdb_time_tz</span> <span class="nv">value
</span>);
</code></pre></div></div>

##### Parameters

* `value`: The time_tz value

##### Return Value

The value. This must be destroyed with `duckdb_destroy_value`.

<br>

#### `duckdb_create_timestamp`

Creates a TIMESTAMP value from a duckdb_timestamp

##### Syntax

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_create_timestamp</span>(<span class="nv">
</span>  <span class="kt">duckdb_timestamp</span> <span class="nv">input
</span>);
</code></pre></div></div>

##### Parameters

* `input`: The duckdb_timestamp value

##### Return Value

The value. This must be destroyed with `duckdb_destroy_value`.

<br>

#### `duckdb_create_timestamp_tz`

Creates a TIMESTAMP_TZ value from a duckdb_timestamp

##### Syntax

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_create_timestamp_tz</span>(<span class="nv">
</span>  <span class="kt">duckdb_timestamp</span> <span class="nv">input
</span>);
</code></pre></div></div>

##### Parameters

* `input`: The duckdb_timestamp value

##### Return Value

The value. This must be destroyed with `duckdb_destroy_value`.

<br>

#### `duckdb_create_timestamp_s`

Creates a TIMESTAMP_S value from a duckdb_timestamp_s

##### Syntax

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_create_timestamp_s</span>(<span class="nv">
</span>  <span class="nv">duckdb_timestamp_s</span> <span class="nv">input
</span>);
</code></pre></div></div>

##### Parameters

* `input`: The duckdb_timestamp_s value

##### Return Value

The value. This must be destroyed with `duckdb_destroy_value`.

<br>

#### `duckdb_create_timestamp_ms`

Creates a TIMESTAMP_MS value from a duckdb_timestamp_ms

##### Syntax

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_create_timestamp_ms</span>(<span class="nv">
</span>  <span class="nv">duckdb_timestamp_ms</span> <span class="nv">input
</span>);
</code></pre></div></div>

##### Parameters

* `input`: The duckdb_timestamp_ms value

##### Return Value

The value. This must be destroyed with `duckdb_destroy_value`.

<br>

#### `duckdb_create_timestamp_ns`

Creates a TIMESTAMP_NS value from a duckdb_timestamp_ns

##### Syntax

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_create_timestamp_ns</span>(<span class="nv">
</span>  <span class="nv">duckdb_timestamp_ns</span> <span class="nv">input
</span>);
</code></pre></div></div>

##### Parameters

* `input`: The duckdb_timestamp_ns value

##### Return Value

The value. This must be destroyed with `duckdb_destroy_value`.

<br>

#### `duckdb_create_interval`

Creates a value from an interval

##### Syntax

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_create_interval</span>(<span class="nv">
</span>  <span class="kt">duckdb_interval</span> <span class="nv">input
</span>);
</code></pre></div></div>

##### Parameters

* `input`: The interval value

##### Return Value

The value. This must be destroyed with `duckdb_destroy_value`.

<br>

#### `duckdb_create_blob`

Creates a value from a blob

##### Syntax

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_create_blob</span>(<span class="nv">
</span>  <span class="kt">const</span> <span class="kt">uint8_t</span> *<span class="nv">data</span>,<span class="nv">
</span>  <span class="kt">idx_t</span> <span class="nv">length
</span>);
</code></pre></div></div>

##### Parameters

* `data`: The blob data
* `length`: The length of the blob data

##### Return Value

The value. This must be destroyed with `duckdb_destroy_value`.

<br>

#### `duckdb_create_bit`

Creates a BIT value from a duckdb_bit

##### Syntax

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_create_bit</span>(<span class="nv">
</span>  <span class="nv">duckdb_bit</span> <span class="nv">input
</span>);
</code></pre></div></div>

##### Parameters

* `input`: The duckdb_bit value

##### Return Value

The value. This must be destroyed with `duckdb_destroy_value`.

<br>

#### `duckdb_create_uuid`

Creates a UUID value from a uhugeint

##### Syntax

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_create_uuid</span>(<span class="nv">
</span>  <span class="kt">duckdb_uhugeint</span> <span class="nv">input
</span>);
</code></pre></div></div>

##### Parameters

* `input`: The duckdb_uhugeint containing the UUID

##### Return Value

The value. This must be destroyed with `duckdb_destroy_value`.

<br>

#### `duckdb_get_bool`

Returns the boolean value of the given value.

##### Syntax

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">bool</span> <span class="nv">duckdb_get_bool</span>(<span class="nv">
</span>  <span class="kt">duckdb_value</span> <span class="nv">val
</span>);
</code></pre></div></div>

##### Parameters

* `val`: A duckdb_value containing a boolean

##### Return Value

A boolean, or false if the value cannot be converted

<br>

#### `duckdb_get_int8`

Returns the int8_t value of the given value.

##### Syntax

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">int8_t</span> <span class="nv">duckdb_get_int8</span>(<span class="nv">
</span>  <span class="kt">duckdb_value</span> <span class="nv">val
</span>);
</code></pre></div></div>

##### Parameters

* `val`: A duckdb_value containing a tinyint

##### Return Value

A int8_t, or MinValue<int8> if the value cannot be converted

<br>

#### `duckdb_get_uint8`

Returns the uint8_t value of the given value.

##### Syntax

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">uint8_t</span> <span class="nv">duckdb_get_uint8</span>(<span class="nv">
</span>  <span class="kt">duckdb_value</span> <span class="nv">val
</span>);
</code></pre></div></div>

##### Parameters

* `val`: A duckdb_value containing a utinyint

##### Return Value

A uint8_t, or MinValue<uint8> if the value cannot be converted

<br>

#### `duckdb_get_int16`

Returns the int16_t value of the given value.

##### Syntax

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">int16_t</span> <span class="nv">duckdb_get_int16</span>(<span class="nv">
</span>  <span class="kt">duckdb_value</span> <span class="nv">val
</span>);
</code></pre></div></div>

##### Parameters

* `val`: A duckdb_value containing a smallint

##### Return Value

A int16_t, or MinValue<int16> if the value cannot be converted

<br>

#### `duckdb_get_uint16`

Returns the uint16_t value of the given value.

##### Syntax

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">uint16_t</span> <span class="nv">duckdb_get_uint16</span>(<span class="nv">
</span>  <span class="kt">duckdb_value</span> <span class="nv">val
</span>);
</code></pre></div></div>

##### Parameters

* `val`: A duckdb_value containing a usmallint

##### Return Value

A uint16_t, or MinValue<uint16> if the value cannot be converted

<br>

#### `duckdb_get_int32`

Returns the int32_t value of the given value.

##### Syntax

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">int32_t</span> <span class="nv">duckdb_get_int32</span>(<span class="nv">
</span>  <span class="kt">duckdb_value</span> <span class="nv">val
</span>);
</code></pre></div></div>

##### Parameters

* `val`: A duckdb_value containing a integer

##### Return Value

A int32_t, or MinValue<int32> if the value cannot be converted

<br>

#### `duckdb_get_uint32`

Returns the uint32_t value of the given value.

##### Syntax

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">uint32_t</span> <span class="nv">duckdb_get_uint32</span>(<span class="nv">
</span>  <span class="kt">duckdb_value</span> <span class="nv">val
</span>);
</code></pre></div></div>

##### Parameters

* `val`: A duckdb_value containing a uinteger

##### Return Value

A uint32_t, or MinValue<uint32> if the value cannot be converted

<br>

#### `duckdb_get_int64`

Returns the int64_t value of the given value.

##### Syntax

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">int64_t</span> <span class="nv">duckdb_get_int64</span>(<span class="nv">
</span>  <span class="kt">duckdb_value</span> <span class="nv">val
</span>);
</code></pre></div></div>

##### Parameters

* `val`: A duckdb_value containing a bigint

##### Return Value

A int64_t, or MinValue<int64> if the value cannot be converted

<br>

#### `duckdb_get_uint64`

Returns the uint64_t value of the given value.

##### Syntax

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">uint64_t</span> <span class="nv">duckdb_get_uint64</span>(<span class="nv">
</span>  <span class="kt">duckdb_value</span> <span class="nv">val
</span>);
</code></pre></div></div>

##### Parameters

* `val`: A duckdb_value containing a ubigint

##### Return Value

A uint64_t, or MinValue<uint64> if the value cannot be converted

<br>

#### `duckdb_get_hugeint`

Returns the hugeint value of the given value.

##### Syntax

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_hugeint</span> <span class="nv">duckdb_get_hugeint</span>(<span class="nv">
</span>  <span class="kt">duckdb_value</span> <span class="nv">val
</span>);
</code></pre></div></div>

##### Parameters

* `val`: A duckdb_value containing a hugeint

##### Return Value

A duckdb_hugeint, or MinValue<hugeint> if the value cannot be converted

<br>

#### `duckdb_get_uhugeint`

Returns the uhugeint value of the given value.

##### Syntax

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_uhugeint</span> <span class="nv">duckdb_get_uhugeint</span>(<span class="nv">
</span>  <span class="kt">duckdb_value</span> <span class="nv">val
</span>);
</code></pre></div></div>

##### Parameters

* `val`: A duckdb_value containing a uhugeint

##### Return Value

A duckdb_uhugeint, or MinValue<uhugeint> if the value cannot be converted

<br>

#### `duckdb_get_varint`

Returns the duckdb_varint value of the given value.
The `data` field must be destroyed with `duckdb_free`.

##### Syntax

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">duckdb_varint</span> <span class="nv">duckdb_get_varint</span>(<span class="nv">
</span>  <span class="kt">duckdb_value</span> <span class="nv">val
</span>);
</code></pre></div></div>

##### Parameters

* `val`: A duckdb_value containing a VARINT

##### Return Value

A duckdb_varint. The `data` field must be destroyed with `duckdb_free`.

<br>

#### `duckdb_get_decimal`

Returns the duckdb_decimal value of the given value.

##### Syntax

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_decimal</span> <span class="nv">duckdb_get_decimal</span>(<span class="nv">
</span>  <span class="kt">duckdb_value</span> <span class="nv">val
</span>);
</code></pre></div></div>

##### Parameters

* `val`: A duckdb_value containing a DECIMAL

##### Return Value

A duckdb_decimal, or MinValue<decimal> if the value cannot be converted

<br>

#### `duckdb_get_float`

Returns the float value of the given value.

##### Syntax

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">float</span> <span class="nv">duckdb_get_float</span>(<span class="nv">
</span>  <span class="kt">duckdb_value</span> <span class="nv">val
</span>);
</code></pre></div></div>

##### Parameters

* `val`: A duckdb_value containing a float

##### Return Value

A float, or NAN if the value cannot be converted

<br>

#### `duckdb_get_double`

Returns the double value of the given value.

##### Syntax

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">double</span> <span class="nv">duckdb_get_double</span>(<span class="nv">
</span>  <span class="kt">duckdb_value</span> <span class="nv">val
</span>);
</code></pre></div></div>

##### Parameters

* `val`: A duckdb_value containing a double

##### Return Value

A double, or NAN if the value cannot be converted

<br>

#### `duckdb_get_date`

Returns the date value of the given value.

##### Syntax

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_date</span> <span class="nv">duckdb_get_date</span>(<span class="nv">
</span>  <span class="kt">duckdb_value</span> <span class="nv">val
</span>);
</code></pre></div></div>

##### Parameters

* `val`: A duckdb_value containing a date

##### Return Value

A duckdb_date, or MinValue<date> if the value cannot be converted

<br>

#### `duckdb_get_time`

Returns the time value of the given value.

##### Syntax

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_time</span> <span class="nv">duckdb_get_time</span>(<span class="nv">
</span>  <span class="kt">duckdb_value</span> <span class="nv">val
</span>);
</code></pre></div></div>

##### Parameters

* `val`: A duckdb_value containing a time

##### Return Value

A duckdb_time, or MinValue<time> if the value cannot be converted

<br>

#### `duckdb_get_time_tz`

Returns the time_tz value of the given value.

##### Syntax

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_time_tz</span> <span class="nv">duckdb_get_time_tz</span>(<span class="nv">
</span>  <span class="kt">duckdb_value</span> <span class="nv">val
</span>);
</code></pre></div></div>

##### Parameters

* `val`: A duckdb_value containing a time_tz

##### Return Value

A duckdb_time_tz, or MinValue<time_tz> if the value cannot be converted

<br>

#### `duckdb_get_timestamp`

Returns the TIMESTAMP value of the given value.

##### Syntax

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_timestamp</span> <span class="nv">duckdb_get_timestamp</span>(<span class="nv">
</span>  <span class="kt">duckdb_value</span> <span class="nv">val
</span>);
</code></pre></div></div>

##### Parameters

* `val`: A duckdb_value containing a TIMESTAMP

##### Return Value

A duckdb_timestamp, or MinValue<timestamp> if the value cannot be converted

<br>

#### `duckdb_get_timestamp_tz`

Returns the TIMESTAMP_TZ value of the given value.

##### Syntax

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_timestamp</span> <span class="nv">duckdb_get_timestamp_tz</span>(<span class="nv">
</span>  <span class="kt">duckdb_value</span> <span class="nv">val
</span>);
</code></pre></div></div>

##### Parameters

* `val`: A duckdb_value containing a TIMESTAMP_TZ

##### Return Value

A duckdb_timestamp, or MinValue<timestamp_tz> if the value cannot be converted

<br>

#### `duckdb_get_timestamp_s`

Returns the duckdb_timestamp_s value of the given value.

##### Syntax

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">duckdb_timestamp_s</span> <span class="nv">duckdb_get_timestamp_s</span>(<span class="nv">
</span>  <span class="kt">duckdb_value</span> <span class="nv">val
</span>);
</code></pre></div></div>

##### Parameters

* `val`: A duckdb_value containing a TIMESTAMP_S

##### Return Value

A duckdb_timestamp_s, or MinValue<timestamp_s> if the value cannot be converted

<br>

#### `duckdb_get_timestamp_ms`

Returns the duckdb_timestamp_ms value of the given value.

##### Syntax

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">duckdb_timestamp_ms</span> <span class="nv">duckdb_get_timestamp_ms</span>(<span class="nv">
</span>  <span class="kt">duckdb_value</span> <span class="nv">val
</span>);
</code></pre></div></div>

##### Parameters

* `val`: A duckdb_value containing a TIMESTAMP_MS

##### Return Value

A duckdb_timestamp_ms, or MinValue<timestamp_ms> if the value cannot be converted

<br>

#### `duckdb_get_timestamp_ns`

Returns the duckdb_timestamp_ns value of the given value.

##### Syntax

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">duckdb_timestamp_ns</span> <span class="nv">duckdb_get_timestamp_ns</span>(<span class="nv">
</span>  <span class="kt">duckdb_value</span> <span class="nv">val
</span>);
</code></pre></div></div>

##### Parameters

* `val`: A duckdb_value containing a TIMESTAMP_NS

##### Return Value

A duckdb_timestamp_ns, or MinValue<timestamp_ns> if the value cannot be converted

<br>

#### `duckdb_get_interval`

Returns the interval value of the given value.

##### Syntax

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_interval</span> <span class="nv">duckdb_get_interval</span>(<span class="nv">
</span>  <span class="kt">duckdb_value</span> <span class="nv">val
</span>);
</code></pre></div></div>

##### Parameters

* `val`: A duckdb_value containing a interval

##### Return Value

A duckdb_interval, or MinValue<interval> if the value cannot be converted

<br>

#### `duckdb_get_value_type`

Returns the type of the given value. The type is valid as long as the value is not destroyed.
The type itself must not be destroyed.

##### Syntax

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_logical_type</span> <span class="nv">duckdb_get_value_type</span>(<span class="nv">
</span>  <span class="kt">duckdb_value</span> <span class="nv">val
</span>);
</code></pre></div></div>

##### Parameters

* `val`: A duckdb_value

##### Return Value

A duckdb_logical_type.

<br>

#### `duckdb_get_blob`

Returns the blob value of the given value.

##### Syntax

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_blob</span> <span class="nv">duckdb_get_blob</span>(<span class="nv">
</span>  <span class="kt">duckdb_value</span> <span class="nv">val
</span>);
</code></pre></div></div>

##### Parameters

* `val`: A duckdb_value containing a blob

##### Return Value

A duckdb_blob

<br>

#### `duckdb_get_bit`

Returns the duckdb_bit value of the given value.
The `data` field must be destroyed with `duckdb_free`.

##### Syntax

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">duckdb_bit</span> <span class="nv">duckdb_get_bit</span>(<span class="nv">
</span>  <span class="kt">duckdb_value</span> <span class="nv">val
</span>);
</code></pre></div></div>

##### Parameters

* `val`: A duckdb_value containing a BIT

##### Return Value

A duckdb_bit

<br>

#### `duckdb_get_uuid`

Returns a duckdb_uhugeint representing the UUID value of the given value.

##### Syntax

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_uhugeint</span> <span class="nv">duckdb_get_uuid</span>(<span class="nv">
</span>  <span class="kt">duckdb_value</span> <span class="nv">val
</span>);
</code></pre></div></div>

##### Parameters

* `val`: A duckdb_value containing a UUID

##### Return Value

A duckdb_uhugeint representing the UUID value

<br>

#### `duckdb_get_varchar`

Obtains a string representation of the given value.
The result must be destroyed with `duckdb_free`.

##### Syntax

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">char</span> *<span class="nv">duckdb_get_varchar</span>(<span class="nv">
</span>  <span class="kt">duckdb_value</span> <span class="nv">value
</span>);
</code></pre></div></div>

##### Parameters

* `value`: The value

##### Return Value

The string value. This must be destroyed with `duckdb_free`.

<br>

#### `duckdb_create_struct_value`

Creates a struct value from a type and an array of values. Must be destroyed with `duckdb_destroy_value`.

##### Syntax

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_create_struct_value</span>(<span class="nv">
</span>  <span class="kt">duckdb_logical_type</span> <span class="nv">type</span>,<span class="nv">
</span>  <span class="kt">duckdb_value</span> *<span class="nv">values
</span>);
</code></pre></div></div>

##### Parameters

* `type`: The type of the struct
* `values`: The values for the struct fields

##### Return Value

The struct value, or nullptr, if any child type is `DUCKDB_TYPE_ANY` or `DUCKDB_TYPE_INVALID`.

<br>

#### `duckdb_create_list_value`

Creates a list value from a child (element) type and an array of values of length `value_count`.
Must be destroyed with `duckdb_destroy_value`.

##### Syntax

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_create_list_value</span>(<span class="nv">
</span>  <span class="kt">duckdb_logical_type</span> <span class="nv">type</span>,<span class="nv">
</span>  <span class="kt">duckdb_value</span> *<span class="nv">values</span>,<span class="nv">
</span>  <span class="kt">idx_t</span> <span class="nv">value_count
</span>);
</code></pre></div></div>

##### Parameters

* `type`: The type of the list
* `values`: The values for the list
* `value_count`: The number of values in the list

##### Return Value

The list value, or nullptr, if the child type is `DUCKDB_TYPE_ANY` or `DUCKDB_TYPE_INVALID`.

<br>

#### `duckdb_create_array_value`

Creates an array value from a child (element) type and an array of values of length `value_count`.
Must be destroyed with `duckdb_destroy_value`.

##### Syntax

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_create_array_value</span>(<span class="nv">
</span>  <span class="kt">duckdb_logical_type</span> <span class="nv">type</span>,<span class="nv">
</span>  <span class="kt">duckdb_value</span> *<span class="nv">values</span>,<span class="nv">
</span>  <span class="kt">idx_t</span> <span class="nv">value_count
</span>);
</code></pre></div></div>

##### Parameters

* `type`: The type of the array
* `values`: The values for the array
* `value_count`: The number of values in the array

##### Return Value

The array value, or nullptr, if the child type is `DUCKDB_TYPE_ANY` or `DUCKDB_TYPE_INVALID`.

<br>

#### `duckdb_get_map_size`

Returns the number of elements in a MAP value.

##### Syntax

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">idx_t</span> <span class="nv">duckdb_get_map_size</span>(<span class="nv">
</span>  <span class="kt">duckdb_value</span> <span class="nv">value
</span>);
</code></pre></div></div>

##### Parameters

* `value`: The MAP value.

##### Return Value

The number of elements in the map.

<br>

#### `duckdb_get_map_key`

Returns the MAP key at index as a duckdb_value.

##### Syntax

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_get_map_key</span>(<span class="nv">
</span>  <span class="kt">duckdb_value</span> <span class="nv">value</span>,<span class="nv">
</span>  <span class="kt">idx_t</span> <span class="nv">index
</span>);
</code></pre></div></div>

##### Parameters

* `value`: The MAP value.
* `index`: The index of the key.

##### Return Value

The key as a duckdb_value.

<br>

#### `duckdb_get_map_value`

Returns the MAP value at index as a duckdb_value.

##### Syntax

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_get_map_value</span>(<span class="nv">
</span>  <span class="kt">duckdb_value</span> <span class="nv">value</span>,<span class="nv">
</span>  <span class="kt">idx_t</span> <span class="nv">index
</span>);
</code></pre></div></div>

##### Parameters

* `value`: The MAP value.
* `index`: The index of the value.

##### Return Value

The value as a duckdb_value.

<br>

#### `duckdb_is_null_value`

Returns whether the value's type is SQLNULL or not.

##### Syntax

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">bool</span> <span class="nv">duckdb_is_null_value</span>(<span class="nv">
</span>  <span class="kt">duckdb_value</span> <span class="nv">value
</span>);
</code></pre></div></div>

##### Parameters

* `value`: The value to check.

##### Return Value

True, if the value's type is SQLNULL, otherwise false.

<br>

#### `duckdb_create_null_value`

Creates a value of type SQLNULL.


##### Return Value

The duckdb_value representing SQLNULL. This must be destroyed with `duckdb_destroy_value`.

##### Syntax

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_create_null_value</span>(<span class="nv">
</span>  <span class="nv">
</span>);
</code></pre></div></div>
<br>

#### `duckdb_get_list_size`

Returns the number of elements in a LIST value.

##### Syntax

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">idx_t</span> <span class="nv">duckdb_get_list_size</span>(<span class="nv">
</span>  <span class="kt">duckdb_value</span> <span class="nv">value
</span>);
</code></pre></div></div>

##### Parameters

* `value`: The LIST value.

##### Return Value

The number of elements in the list.

<br>

#### `duckdb_get_list_child`

Returns the LIST child at index as a duckdb_value.

##### Syntax

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_get_list_child</span>(<span class="nv">
</span>  <span class="kt">duckdb_value</span> <span class="nv">value</span>,<span class="nv">
</span>  <span class="kt">idx_t</span> <span class="nv">index
</span>);
</code></pre></div></div>

##### Parameters

* `value`: The LIST value.
* `index`: The index of the child.

##### Return Value

The child as a duckdb_value.

<br>

#### `duckdb_create_enum_value`

Creates an enum value from a type and a value. Must be destroyed with `duckdb_destroy_value`.

##### Syntax

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_create_enum_value</span>(<span class="nv">
</span>  <span class="kt">duckdb_logical_type</span> <span class="nv">type</span>,<span class="nv">
</span>  <span class="kt">uint64_t</span> <span class="nv">value
</span>);
</code></pre></div></div>

##### Parameters

* `type`: The type of the enum
* `value`: The value for the enum

##### Return Value

The enum value, or nullptr.

<br>

#### `duckdb_get_enum_value`

Returns the enum value of the given value.

##### Syntax

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">uint64_t</span> <span class="nv">duckdb_get_enum_value</span>(<span class="nv">
</span>  <span class="kt">duckdb_value</span> <span class="nv">value
</span>);
</code></pre></div></div>

##### Parameters

* `value`: A duckdb_value containing an enum

##### Return Value

A uint64_t, or MinValue<uint64> if the value cannot be converted

<br>

#### `duckdb_get_struct_child`

Returns the STRUCT child at index as a duckdb_value.

##### Syntax

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">duckdb_value</span> <span class="nv">duckdb_get_struct_child</span>(<span class="nv">
</span>  <span class="kt">duckdb_value</span> <span class="nv">value</span>,<span class="nv">
</span>  <span class="kt">idx_t</span> <span class="nv">index
</span>);
</code></pre></div></div>

##### Parameters

* `value`: The STRUCT value.
* `index`: The index of the child.

##### Return Value

The child as a duckdb_value.

<br>