Documentation
/ SQL
/ Functions
Struct Functions
| 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). |
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 |
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