1.数值函数
ABS
(求绝对值)ROUND
(四舍五入)ROUND(4.567, 2)
返回 4.57
,将数字 4.567
四舍五入到小数点后两位TRUNC
(截断)TRUNC(4.567, 1)
返回 4.5
,截断数字 4.567
到小数点后一位MOD
(取模)
2.字符函数
CONCAT
(字符串拼接)CONCAT('Hello, ', 'World!')
返回 'Hello, World!'
SUBSTR
(截取子字符串)SUBSTR('Hello, World!', 7, 5)
返回 'World'
,从字符串第 7 个字符开始截取 5 个字符LENGTH
(获取字符串长度)UPPER
(转换为大写)LOWER
(转换为小写)
3.日期函数
SYSDATE
(获取当前日期和时间)ADD_MONTHS
(增加或减少指定月数)ADD_MONTHS(SYSDATE, 3)
返回当前日期 3 个月后的日期MONTHS_BETWEEN
(计算两个日期之间的月数差)NEXT_DAY
(获取指定日期之后的下一个指定星期几的日期)
4.聚合函数
SUM
(求和)AVG
(求平均值)COUNT
(计数)MIN
(求最小值)MAX
(求最大值)
这些函数通常与 GROUP BY
子句一起使用,用于对数据进行分组统计。
例如:
SELECT department, COUNT(*), AVG(salary) FROM employees GROUP BY department;
5.转换函数
- 数据类型转换函数:
TO_CHAR
(将日期或数字转换为字符串)TO_CHAR(SYSDATE,'YYYY-MM-DD')
将当前日期转换为指定格式的字符串TO_DATE
(将字符串转换为日期)TO_DATE('2023-10-01','YYYY-MM-DD')
将给定格式的字符串转换为日期类型TO_NUMBER
(将字符串转换为数字)
- 字符集转换函数:在处理多字符集环境时,
CONVERT
等函数可用于字符集之间的转换。
6.条件函数
CASE
表达式:CASE WHEN 条件 THEN 取值 ELSE 取值 END
语句用于在 SQL 中实现条件逻辑。有简单 CASE
表达式和搜索 CASE
表达式两种形式。- 示例:
SELECT employee_name,salary,CASE departmentWHEN 'HR' THEN salary * 1.1WHEN 'IT' THEN salary * 1.05ELSE salaryEND AS adjusted_salary
FROM employees;
SELECT employee_name,salary,CASEWHEN salary < 5000 THEN 'Low'WHEN salary BETWEEN 5000 AND 10000 THEN 'Medium'ELSE 'High'END AS salary_level
FROM employees;
DECODE
函数:DECODE
函数是 CASE
表达式的一种简化形式,用于简单的条件判断。例如,DECODE(department, 'HR', salary * 1.1, 'IT', salary * 1.05, salary)
功能与上述简单 CASE
表达式类似。
7.分析函数
ROW_NUMBER
(为结果集的每一行生成一个唯一的行号)RANK
(为结果集的每一行生成一个排名,相同值排名相同,下一个排名会跳过相应数量)DENSE_RANK
(与 RANK
类似,但相同值排名相同,下一个排名不会跳过)LAG
和 LEAD
(用于访问结果集中当前行之前或之后的行的数据)- 示例:
SELECT employee_name,salary,ROW_NUMBER() OVER (ORDER BY salary DESC) AS salary_rank
FROM employees;
SELECT employee_name,salary,LAG(salary, 1, 0) OVER (ORDER BY employee_id) AS prev_salary
FROM employees;