| Name |
Description |
struct.entry |
Dot notation that serves as an alias for struct_extract from named STRUCTs. |
struct[entry] |
Bracket notation that serves as an alias for struct_extract from named STRUCTs. |
struct[idx] |
Bracket notation that serves as an alias for struct_extract from unnamed STRUCTs (tuples), using an index (1-based). |
remap_struct(input, target_type, mapping, defaults) |
Remap a STRUCT, LIST, or MAP value into the shape given by the type of target_type, renaming and reordering fields, descending into nested types, and filling missing fields from defaults. |
row(any, ...) |
Create an unnamed STRUCT (tuple) containing the argument values. |
struct_concat(structs...) |
Merge the multiple structs into a single STRUCT. |
struct_contains(struct, entry) |
Check if the STRUCT contains the specified entry. |
struct_extract(struct, 'entry') |
Extract the named entry from the STRUCT. |
struct_extract(struct, idx) |
Extract the entry from an unnamed STRUCT (tuple) using an index (1-based). |
struct_extract_at(struct, idx) |
Extract the entry from a STRUCT (tuple) using an index (1-based). |
struct_insert(struct, name := any, ...) |
Add field(s) to an existing STRUCT. |
struct_pack(name := any, ...) |
Create a STRUCT containing the argument values. The entry name will be the bound variable name. |
struct_position(struct, entry) |
Return the index of the entry within the STRUCT (1-based), or NULL if not found. |
struct_update(struct, name := any, ...) |
Add or update field(s) of an existing STRUCT. |
struct_values(struct) |
Return the values of a STRUCT as an unnamed STRUCT (tuple). |
| Description |
Dot notation that serves as an alias for struct_extract from named STRUCTs. |
| Example |
({'i': 3, 's': 'string'}).i |
| Result |
3 |
| Description |
Bracket notation that serves as an alias for struct_extract from named STRUCTs. |
| Example |
({'i': 3, 's': 'string'})['i'] |
| Result |
3 |
| Description |
Bracket notation that serves as an alias for struct_extract from unnamed STRUCTs (tuples), using an index (1-based). |
| Example |
(row(42, 84))[1] |
| Result |
42 |
| Description |
Remap an input value of type STRUCT, LIST, or MAP into the shape declared by the type of target_type, renaming and reordering fields, descending into nested types, and filling target fields that have no source counterpart from defaults. Only the type of target_type is used, not its value, so any value of the desired type works; a typed NULL literal (e.g. NULL::STRUCT(v1 INT, v2 INT)) is a convenient way to declare the target shape when no suitable value is at hand. mapping is a STRUCT keyed by target field name whose values name the source field to read from; defaults is a STRUCT of constant values for the remaining target fields. Every target field must be covered by either mapping or defaults. |
| Example |
remap_struct({'i': 1, 'j': 2}, NULL::STRUCT(v1 INT, v2 INT, v3 INT), {'v1': 'j', 'v3': 'i'}, {'v2': NULL::INTEGER}) |
| Result |
{'v1': 2, 'v2': NULL, 'v3': 1} |
To remap a target field that is itself a STRUCT, give its mapping value as ROW(source_field, {inner_mapping}), and nest its defaults the same way. A LIST's single child is addressed by the mapping key 'list', and a MAP's children by the keys 'key' and 'value'.
| Description |
Create an unnamed STRUCT (tuple) containing the argument values. |
| Example |
row(i, i % 4, i / 4) |
| Result |
(10, 2, 2.5) |
| Description |
Merge the multiple structs into a single STRUCT. |
| Example |
struct_concat(struct_pack(i := 4), struct_pack(s := 'string')) |
| Result |
{'i': 4, 's': string} |
| Description |
Check if the STRUCT contains the specified entry. |
| Example |
struct_contains(row(1, 2, 3), 2) |
| Result |
true |
| Alias |
struct_has |
| Description |
Extract the named entry from the STRUCT. |
| Example |
struct_extract({'i': 3, 'v2': 3, 'v3': 0}, 'i') |
| Result |
3 |
| Description |
Extract the entry from an unnamed STRUCT (tuple) using an index (1-based). |
| Example |
struct_extract(row(42, 84), 1) |
| Result |
42 |
| Description |
Extract the entry from a STRUCT (tuple) using an index (1-based). |
| Example |
struct_extract_at({'v1': 10, 'v2': 20, 'v3': 3}, 20) |
| Result |
20 |
| Description |
Add field(s) to an existing STRUCT. |
| Example |
struct_insert({'a': 1}, b := 2) |
| Result |
{'a': 1, 'b': 2} |
| Description |
Create a STRUCT containing the argument values. The entry name will be the bound variable name. |
| Example |
struct_pack(i := 4, s := 'string') |
| Result |
{'i': 4, 's': string} |
| Description |
Return the index of the entry within the STRUCT (1-based), or NULL if not found. |
| Example |
struct_position(row(1, 2, 3), 2) |
| Result |
2 |
| Alias |
struct_indexof |
| Description |
Add or update field(s) of an existing STRUCT. |
| Example |
struct_update({'a': 1, 'b': 2}, b := 3, c := 4) |
| Result |
{'a': 1, 'b': 3, 'c': 4} |
| Description |
Return the values of a STRUCT as an unnamed STRUCT (tuple). |
| Example |
struct_values({'a': 1, 'b': 2, 'c': 3}) |
| Result |
(1, 2, 3) |
© 2026 DuckDB Foundation, Amsterdam NL