函数调用表达式
📄字数 1.2K
👁️阅读量 加载中...
概述
函数调用表达式用于调用数据库系统函数或用户自定义函数,返回计算结果。函数调用通常采用以下形式:
function_name(arg1, arg2, ...)
此外,在表达式中还可以嵌套调用多个函数,即使用一个函数的返回值作为另一个函数的参数。函数嵌套有助于实现更复杂的数据转换和处理逻辑。
提示
嵌套层数不宜过深,影响可读性。且某些函数对输入参数类型有严格要求,嵌套时应确保数据类型兼容。
系统函数分类
类型 | 示例函数 | 用途 |
---|---|---|
数学函数 | ABS() , ROUND() , FLOOR() | 数值计算与取整 |
字符串函数 | LENGTH() , SUBSTR() , CONCAT() | 字符串处理 |
日期和时间函数 | CURRENT_DATE , EXTRACT() | 获取与格式化时间 |
聚合函数 | SUM() , AVG() , COUNT() | 分组统计计算 |
... | ... | ... |
详细信息见系统函数
示例
- 示例1:函数调用表达式及函数嵌套使用
sql
-- 建表
SQL> CREATE TABLE product (
id INT PRIMARY KEY,
name VARCHAR(50),
price DECIMAL(10, 2),
description TEXT
);
-- 插入数据
SQL> INSERT INTO product VALUES
(1, 'Laptop', 7899.99, 'Lightweight and powerful'),
(2, 'Phone', 4999.00, 'High-resolution camera'),
(3, 'Tablet', 2599.49, NULL);
-- ROUND函数四舍五入、LENGTH返回字符串长度、COALESCE空值处理函数
SQL> SELECT
name,
ROUND(price * 1.1, 2) AS price_with_tax,
LENGTH(description) AS description_length,
COALESCE(description, 'No Description') AS safe_description
FROM product;
+--------+----------------+--------------------+--------------------------+
| NAME | PRICE_WITH_TAX | DESCRIPTION_LENGTH | SAFE_DESCRIPTION |
+--------+----------------+--------------------+--------------------------+
| Laptop | 8689.99 | 24 | Lightweight and powerful |
| Phone | 5498.9 | 22 | High-resolution camera |
| Tablet | 2859.44 | <NULL> | No Description |
+--------+----------------+--------------------+--------------------------+
-- 函数嵌套使用
SQL> SELECT
name,
LENGTH(description) AS len,
UPPER(SUBSTR(name, 1, 3)) AS name_prefix,
CASE
WHEN LENGTH(description) > 20 THEN 'Long'
ELSE 'Short or NULL'
END AS description_type
FROM product;
+--------+--------+-------------+------------------+
| NAME | LEN | NAME_PREFIX | DESCRIPTION_TYPE |
+--------+--------+-------------+------------------+
| Laptop | 24 | LAP | Long |
| Phone | 22 | PHO | Long |
| Tablet | <NULL> | TAB | Short or NULL |
+--------+--------+-------------+------------------+
应用场景
- 场景一:字符串处理函数调用,用于清洗、提取文本内容
- 场景二:时间/日期函数调用,获取当前时间、时间差、格式化等
- 场景三:聚合函数调用,用于汇总、统计、分组后分析