Oracle数据库提供了一系列的内置函数,这些函数在SQL语句执行时用于处理数据,这些函数可以大致分为以下几类:字符函数、数值函数、日期函数、转换函数和其他一些高级函数,下面将详细介绍这些常用的Oracle函数。
字符函数
字符函数主要用于处理字符串类型的数据。
1、UPPER() 和 LOWER()
UPPER()
函数将文本转换为大写,而 LOWER()
函数将文本转换为小写。
示例:SELECT UPPER('Oracle'), LOWER('Oracle') FROM dual;
2、INITCAP() 和 INITIALIES()
INITCAP()
函数将每个单词的首字母转换为大写,其余字母转换为小写。
INITIALIES()
函数则将文本转换为带有下划线的小写。
示例:SELECT INITCAP('oracle database'), INITIALIES('oracle database') FROM dual;
3、CONCAT() 和 ||
CONCAT()
函数和 ||
运算符都用于连接两个或多个字符串。
示例:SELECT CONCAT('Hello', ' World'), 'Hello' || ' World' FROM dual;
4、SUBSTR() 和 INSTR()
SUBSTR()
函数用于提取子字符串,而 INSTR()
函数用于查找子字符串的位置。
示例:SELECT SUBSTR('Oracle', 1, 5), INSTR('Database Management', 'an') FROM dual;
5、REPLACE() 和 TRANSLATE()
REPLACE()
函数用于替换字符串中的某个字符或子字符串。
TRANSLATE()
函数用于根据字符映射表替换字符串中的字符。
示例:SELECT REPLACE('Oracle', 'a', 'e'), TRANSLATE('Table', 'aeiou', 'AEIOU') FROM dual;
数值函数
数值函数用于对数字数据进行操作。
1、ROUND() 和 TRUNC()
ROUND()
函数用于四舍五入数字到指定的小数位数。
TRUNC()
函数用于截断数字到整数部分。
示例:SELECT ROUND(123.456, 2), TRUNC(123.456) FROM dual;
2、MOD() 和 POWER()
MOD()
函数用于计算两个数相除后的余数。
POWER()
函数用于计算一个数的指数次幂。
示例:SELECT MOD(10, 3), POWER(2, 3) FROM dual;
3、ABS() 和 SIGN()
ABS()
函数返回一个数的绝对值。
SIGN()
函数返回一个数的符号(-1、0或1)。
示例:SELECT ABS(-123), SIGN(-123) FROM dual;
日期函数
日期函数用于处理日期和时间类型的数据。
1、SYSDATE()
SYSDATE()
函数返回当前系统日期和时间。
示例:SELECT SYSDATE FROM dual;
2、ADD_MONTHS() 和 NEXT_DAY()
ADD_MONTHS()
函数用于给日期加上指定的月份数。
NEXT_DAY()
函数用于找到指定日期后的下一个指定星期几。
示例:SELECT ADD_MONTHS(SYSDATE, 1), NEXT_DAY(SYSDATE, 'Monday') FROM dual;
3、EXTRACT() 和 TO_CHAR()
EXTRACT()
函数用于从日期中提取特定的部分(如年、月、日等)。
TO_CHAR()
函数用于将日期转换为字符串,允许格式化输出。
示例:SELECT EXTRACT(YEAR FROM SYSDATE), TO_CHAR(SYSDATE, 'YYYY-MM-DD') FROM dual;
转换函数
转换函数用于在不同的数据类型之间进行转换。
1、TO_NUMBER() 和 TO_CHAR()
TO_NUMBER()
函数用于将字符数据转换为数字。
TO_CHAR()
函数用于将数字或日期转换为字符。
示例:SELECT TO_NUMBER('123'), TO_CHAR(123) FROM dual;
2、NVL() 和 NVL2()
NVL()
函数如果第一个参数为NULL,则返回第二个参数的值。
NVL2()
函数如果第一个参数不为NULL,则返回第二个参数的值,否则返回第三个参数的值。
示例:SELECT NVL(NULL, 'N/A'), NVL2('Oracle', 'Yes', 'No') FROM dual;
其他高级函数
除了上述基础函数之外,Oracle还提供了一系列高级函数,如分析函数、集合函数等。
1、ROW_NUMBER() 和 RANK()
ROW_NUMBER()
函数为结果集中的每一行分配唯一的序号。
RANK()
函数为结果集中的每一行分配排名,相同值的行会有相同的排名。
示例:SELECT ROW_NUMBER() OVER (ORDER BY salary DESC), RANK() OVER (ORDER BY salary DESC) FROM employees;
2、SUM() 和 AVG()
SUM()
函数用于计算一列的总和。
AVG()
函数用于计算一列的平均值。
示例:SELECT SUM(salary), AVG(salary) FROM employees;
相关问题与解答
Q1: 如何在Oracle中使用LIKE
操作符进行模糊查询?
A1: 在Oracle中,可以使用LIKE
操作符结合通配符进行模糊查询,常用的通配符有%
(表示任意数量的字符)和_
(表示单个字符),要查找名字以"Li"开头的所有员工,可以使用以下查询:
SELECT * FROM employees WHERE name LIKE 'Li%';
Q2: 如何使用GROUP BY
和HAVING
子句进行分组和筛选?
A2: 在Oracle中,GROUP BY
子句用于将结果集按一列或多列进行分组,而HAVING
子句用于对分组后的结果进行筛选,要找出平均薪资超过5000的部门,可以使用以下查询:
SELECT department, AVG(salary) AS average_salary FROM employees GROUP BY department HAVING AVG(salary) > 5000;