Funktionen
Funktionssyntax
Funktionsverkettung über den Punktoperator
DuckDB unterstützt die Punktsyntax zur Funktionsverkettung. Damit kann der Funktionsaufruf fn(arg1, arg2, arg3, ...) als arg1.fn(arg2, arg3, ...) geschrieben werden. Zum Beispiel der folgende Einsatz der Funktion replace:
SELECT replace(goose_name, 'goose', 'duck') AS duck_nameFROM unnest(['African goose', 'Faroese goose', 'Hungarian goose', 'Pomeranian goose']) breed(goose_name);Das lässt sich wie folgt umschreiben:
SELECT goose_name.replace('goose', 'duck') AS duck_nameFROM unnest(['African goose', 'Faroese goose', 'Hungarian goose', 'Pomeranian goose']) breed(goose_name);Verwendung mit Literalen und Arrays
Um Funktionsverkettung auf Literale und nachfolgende Array-Zugriffe anzuwenden, müssen Sie das Argument in Klammern setzen, z. B.:
SELECT ('hello world').replace(' ', '_');SELECT (2).sqrt();SELECT (m[1]).map_entries()FROM (VALUES ([MAP {'hello': 42}, MAP {'world': 42}])) t(m);Ohne diese Klammern gibt DuckDB für den Funktionsaufruf einen Parser Error zurück:
Parser Error:syntax error at or near "("Einschränkungen
Funktionsverkettung über den Punktoperator ist auf skalare Funktionen beschränkt und wird für Tabellenfunktionen nicht unterstützt.
Der folgende Aufruf gibt beispielsweise einen Parser Error zurück:
SELECT * FROM ('my_file.parquet').read_parquet(); -- does not workAußerdem können die Funktionen coalesce und ifnull derzeit nicht mit Funktionsverkettung verwendet werden:
SELECT (2).coalesce(0); -- does not workSELECT (2).ifnull(0); -- does not workFunktionen abfragen
Die Tabellenfunktion duckdb_functions() zeigt die Liste der derzeit ins System eingebauten Funktionen.
SELECT DISTINCT ON(function_name) function_name, function_type, return_type, parameters, parameter_types, descriptionFROM duckdb_functions()WHERE function_type = 'scalar' AND function_name LIKE 'b%'ORDER BY function_name;| function_name | function_type | return_type | parameters | parameter_types | description |
|---|---|---|---|---|---|
| bar | scalar | VARCHAR | [x, min, max, width] | [DOUBLE, DOUBLE, DOUBLE, DOUBLE] | Draws a band whose width is proportional to (x - min) and equal to width characters when x = max. width defaults to 80 |
| base64 | scalar | VARCHAR | [blob] | [BLOB] | Convert a blob to a base64 encoded string |
| bin | scalar | VARCHAR | [value] | [VARCHAR] | Converts the value to binary representation |
| bit_count | scalar | TINYINT | [x] | [TINYINT] | Returns the number of bits that are set |
| bit_length | scalar | BIGINT | [col0] | [VARCHAR] | Number of bits in a string |
| bit_position | scalar | INTEGER | [substring, bitstring] | [BIT, BIT] | Returns first starting index of the specified substring within bits, or zero if it is not present. The first (leftmost) bit is indexed 1 |
| bitstring | scalar | BIT | [bitstring, length] | [VARCHAR, INTEGER] | Pads the bitstring until the specified length |
Derzeit sind Beschreibung und Parameternamen der Funktionen in der Funktion
duckdb_functions()nicht verfügbar.