跳到主要内容

CREATE SCALAR FUNCTION

引入或更新于:v1.2.799

使用 Databend 的统一函数语法创建标量 SQL UDF。其逻辑完全由 SQL 定义,无需外部编程语言支持。

支持语言

  • 仅支持 SQL 表达式(无需外部运行时环境)

语法

CREATE [ OR REPLACE ] FUNCTION [ IF NOT EXISTS ] <function_name> 
( [<parameter_list>] )
RETURNS <return_type>
AS $$ <expression> $$
[ DESC='<description>' ]

其中:

  • <parameter_list>:可选的逗号分隔参数列表及其类型(例如 x INT, y FLOAT
  • <return_type>:函数返回值的数据类型
  • <expression>:定义函数逻辑的 SQL 表达式

访问控制要求

权限对象类型描述
SUPERGlobal, Table操作 UDF

要创建用户定义函数,执行操作的用户或 current_role 必须拥有 SUPER privilege

示例

-- 创建计算圆面积的函数
CREATE FUNCTION area_of_circle(radius FLOAT)
RETURNS FLOAT
AS $$
pi() * radius * radius
$$;

-- 创建计算年龄(年)的函数
CREATE FUNCTION calculate_age(birth_date DATE)
RETURNS INT
AS $$
date_diff('year', birth_date, now())
$$;

-- 创建带多个参数的函数
CREATE FUNCTION calculate_bmi(weight_kg FLOAT, height_m FLOAT)
RETURNS FLOAT
AS $$
weight_kg / (height_m * height_m)
$$;

-- 使用函数
SELECT area_of_circle(5.0) AS circle_area;
SELECT calculate_age('1990-05-15') AS age;
SELECT calculate_bmi(70.0, 1.75) AS bmi;
欢迎体验 Databend Cloud

基于 Rust + 对象存储构建的新一代多模态数仓,一个平台即可进行 BI、向量、全文检索及地理空间分析。

支持标准 SQL,自动弹性伸缩,助您快速构建现代化数据平台。

注册即领 ¥200 代金券。

注册体验