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). |
struct.entry
Dot notation that serves as an alias for struct_extract from named STRUCTs.
SELECT ({'i': 3, 's': 'string'}).i AS i; i--- 3struct[entry]
Bracket notation that serves as an alias for struct_extract from named STRUCTs.
SELECT ({'i': 3, 's': 'string'})['i'] AS i; i--- 3struct[idx]
Bracket notation that serves as an alias for struct_extract from unnamed STRUCTs (tuples), using an index (1-based).
SELECT (row(42, 84))[1] AS first; first------- 42row(any, ...)
Create an unnamed STRUCT (tuple) containing the argument values.
SELECT row(i, i % 4, i / 4) AS r FROM (SELECT 10 AS i); r---------- (10,2,2)struct_concat(structs...)
Merge the multiple structs into a single STRUCT.
SELECT struct_concat(struct_pack(i := 4), struct_pack(s := 'string')) AS s; s------------ (4,string)struct_contains(struct, entry)
Check if the STRUCT contains the specified entry. Alias: struct_has.
SELECT struct_contains(row(1, 2, 3), 2) AS contains; contains---------- tstruct_extract(struct, 'entry')
Extract the named entry from the STRUCT.
SELECT struct_extract({'i': 3, 'v2': 3, 'v3': 0}, 'i') AS i; i--- 3struct_extract(struct, idx)
Extract the entry from an unnamed STRUCT (tuple) using an index (1-based).
SELECT struct_extract(row(42, 84), 1) AS first; first------- 42struct_extract_at(struct, idx)
Extract the entry from a STRUCT (tuple) using an index (1-based).
SELECT struct_extract_at({'v1': 10, 'v2': 20, 'v3': 3}, 2) AS v; v---- 20struct_insert(struct, name := any, ...)
Add field(s) to an existing STRUCT.
SELECT struct_insert({'a': 1}, b := 2) AS s; s------- (1,2)struct_pack(name := any, ...)
Create a STRUCT containing the argument values. The entry name will be the bound variable name.
SELECT struct_pack(i := 4, s := 'string') AS s; s------------ (4,string)struct_position(struct, entry)
Return the index of the entry within the STRUCT (1-based), or NULL if not found. Alias: struct_indexof.
SELECT struct_position(row(1, 2, 3), 2) AS pos; pos----- 2struct_update(struct, name := any, ...)
Add or update field(s) of an existing STRUCT.
SELECT struct_update({'a': 1, 'b': 2}, b := 3, c := 4) AS s; s--------- (1,3,4)struct_values(struct)
Return the values of a STRUCT as an unnamed STRUCT (tuple).
SELECT struct_values({'a': 1, 'b': 2, 'c': 3}) AS vals; vals--------- (1,2,3)