介绍
在Oracle数据库中,函数是一种算法,用于对传入的参数执行指定的操作,从而返回一个结果。函数被使用来减少代码的复杂度,将一些常用操作组合成一个单独的单元,以便在需要时调用。Oracle提供了大量的内置函数,开发人员还可以创建自定义函数来扩展其功能。
内置函数
数字函数
Oracle提供了许多用于数字操作的内置函数。以下是其中一些常用的函数:
ABS(): 返回参数的绝对值。
CEIL(): 返回大于或等于参数的最小整数。
FLOOR(): 返回小于或等于参数的最大整数。
POWER(): 返回基数的幂。
ROUND(): 四舍五入。
SELECT ABS(-5), CEIL(4.2), FLOOR(4.2), POWER(2,3), ROUND(4.5)
FROM dual;
以上查询结果为:
ABS(-5) | CEIL(4.2) | FLOOR(4.2) | POWER(2,3) | ROUND(4.5)
--------|------------|------------|-----------|-----------
5 | 5 | 4 | 8 | 5
字符串函数
Oracle还提供了许多用于字符串操作的内置函数。以下是其中一些常用的函数:
CONCAT(): 连接两个或多个字符串。
LENGTH(): 返回字符串的长度。
LOWER(): 将字符串转换为小写。
UPPER(): 将字符串转换为大写。
SUBSTR(): 返回字符串的子字符串。
SELECT CONCAT('Hello ','World'), LENGTH('Hello World'), LOWER('Hello World'), UPPER('Hello World'), SUBSTR('Hello World', 1, 5)
FROM dual;
以上查询结果为:
CONCAT('HELLO','WORLD') | LENGTH('HELLO WORLD') | LOWER('HELLO WORLD') | UPPER('HELLO WORLD') | SUBSTR('HELLO WORLD',1,5)
------------------------|-----------------------|-----------------------|-----------------------|----------------------
Hello World | 11 | hello world | HELLO WORLD | Hello
日期函数
Oracle还提供了许多用于日期和时间操作的内置函数。以下是其中一些常用的函数:
SYSDATE: 返回当前日期和时间。
ADD_MONTHS(): 为日期添加指定的月份。
MONTHS_BETWEEN(): 计算两个日期相差的月份。
LAST_DAY: 返回指定月份的最后一天。
SELECT SYSDATE, ADD_MONTHS(SYSDATE, 2), MONTHS_BETWEEN(SYSDATE, '01-JAN-2022'), LAST_DAY(SYSDATE)
FROM dual;
以上查询结果为:
SYSDATE | ADD_MONTHS(SYSDATE,2) | MONTHS_BETWEEN(SYSDATE,'01-JAN-2022') | LAST_DAY(SYSDATE)
--------------------|-----------------------|---------------------------------------|------------------
2022-11-07 14:46:13 | 2023-01-07 | 10.891909 | 2022-11-30
自定义函数
在Oracle中,可以使用CREATE FUNCTION语句来创建自定义函数。以下是一个示例:
CREATE FUNCTION get_full_name (first_name VARCHAR2, last_name VARCHAR2)
RETURN VARCHAR2
IS
BEGIN
RETURN first_name || ' ' || last_name;
END;
以上函数将传入的first_name和last_name连接起来,返回其完整的名字。
要调用自定义函数,可以像使用内置函数一样调用函数名并传入参数:
SELECT get_full_name('John', 'Doe') AS full_name FROM dual;
以上查询结果为:
FULL_NAME
----------
John Doe
总结
Oracle提供了强大的内置函数库,可以帮助将复杂的数据操作简化为几个简洁的代码行。此外,开发人员还可以创建自定义函数来扩展其功能。使用函数可以提高代码的可维护性和可读性,以及提高性能。