⌘+k ctrl+k
1.1.3 (stable)
Search Shortcut cmd + k | ctrl + k
Functions

函数语法

通过点操作符进行函数链式调用

DuckDB 支持使用点语法进行函数链式调用。这使得函数调用 fn(arg1, arg2, arg3, ...) 可以重写为 arg1.fn(arg2, arg3, ...)。例如,以下是对 replace 函数 的使用示例:

SELECT replace(goose_name, 'goose', 'duck') AS duck_name
FROM unnest(['African goose', 'Faroese goose', 'Hungarian goose', 'Pomeranian goose']) breed(goose_name);

这可以重写如下:

SELECT goose_name.replace('goose', 'duck') AS duck_name
FROM unnest(['African goose', 'Faroese goose', 'Hungarian goose', 'Pomeranian goose']) breed(goose_name);

提示 要将函数链应用于字面量,必须使用括号,例如:

SELECT ('hello world').replace(' ', '_');

通过点操作符进行的函数链式调用仅限于标量函数;它不适用于函数。例如,SELECT * FROM ('/myfile.parquet').read_parquet() 是不被支持的。

查询函数

duckdb_functions() 表函数显示了当前系统中内置的函数列表。

SELECT DISTINCT ON(function_name)
    function_name,
    function_type,
    return_type,
    parameters,
    parameter_types,
    description
FROM duckdb_functions()
WHERE function_type = 'scalar'
  AND function_name LIKE 'b%'
ORDER BY function_name;
function_name function_type return_type parameters parameter_types 描述
bar 标量 VARCHAR [x, min, max, width] [DOUBLE, DOUBLE, DOUBLE, DOUBLE] 绘制一个宽度与 (x - min) 成比例的带,当 x = max 时,宽度等于 width 字符。width 默认为 80
base64 标量 VARCHAR [blob] [BLOB] 将blob转换为base64编码的字符串
bin scalar VARCHAR [value] [VARCHAR] 将值转换为二进制表示
bit_count scalar TINYINT [x] [TINYINT] 返回设置的位数
bit_length 标量 BIGINT [col0] [VARCHAR] NULL
bit_position scalar INTEGER [substring, bitstring] [BIT, BIT] 返回指定子串在比特中的第一个起始索引,如果不存在则返回零。第一个(最左边的)比特索引为1
bitstring scalar BIT [bitstring, length] [VARCHAR, INTEGER] 将bitstring填充到指定长度

目前,duckdb_functions() 函数中无法获取函数的描述和参数名称。

本节中的页面