Skip to content

函数调用

什么是函数调用?

在SQL中,函数调用是指使用数据库提供的内建函数或用户自定义函数来处理数据、执行计算或进行其他操作。函数可以帮助我们简化复杂操作,提高查询效率。

基本语法

函数调用的基本语法非常简单:

sql
function_name([expression[, expression...]])

其中:

  • function_name:要调用的函数名称(有时需要包含模式名)
  • expression:传递给函数的参数,可以是常量、列名或其他表达式
  • 参数列表用圆括号()括起来,多个参数之间用逗号,分隔

常见函数调用示例

数学函数

sql
-- 计算2的平方根
SELECT sqrt(2);
-- 结果: 1.4142135623731

-- 计算圆的面积(半径为5)
SELECT pi() * power(5, 2);
-- 结果: 约78.54

字符串函数

sql
-- 转换为大写
SELECT upper('hello');
-- 结果: HELLO

-- 计算字符串长度
SELECT length('PostgreSQL');
-- 结果: 10

日期函数

sql
-- 获取当前日期
SELECT current_date;
-- 结果: 2023-07-15(举例)

-- 日期加法(当前日期加30天)
SELECT current_date + 30;
-- 结果: 2023-08-14(如果当前日期是2023-07-15)

函数调用的不同形式

函数类型语法特点示例
标量函数返回单个值sqrt(2), upper('hello')
聚合函数处理多行数据,返回单个结果avg(salary), count(*)
窗口函数使用OVER子句rank() OVER (ORDER BY score DESC)
表函数返回一个结果集generate_series(1, 5)

调用自定义函数

除了数据库提供的内建函数,你也可以调用自定义函数:

sql
-- 假设我们定义了一个计算税后价格的函数
SELECT calculate_price_after_tax(product_price, tax_rate)
FROM products;

函数调用嵌套

函数调用可以嵌套使用,内层函数的结果会作为外层函数的参数:

sql
-- 计算字符串转换为小写后的长度
SELECT length(lower('POSTGRESQL'));
-- 结果: 10

-- 四舍五入平方根结果到两位小数
SELECT round(sqrt(10), 2);
-- 结果: 3.16

使用函数的小技巧

  1. 函数参数类型:确保传递给函数的参数类型与函数期望的类型匹配
  2. NULL值处理:大多数函数在接收NULL参数时会返回NULL
  3. 模式限定:如果存在同名函数,可以使用模式名来限定要使用的函数:schema_name.function_name()

函数是SQL的强大工具,掌握常用函数的使用可以大大提高SQL编写效率和灵活性!