📅  最后修改于: 2020-12-29 04:18:30             🧑  作者: Mango
Oracle SQL提供了丰富的内置函数库,可用于各种任务。函数的基本功能可以是字符串的大小写转换,字符串内或子字符串运算,数字数据的数学计算以及日期类型值的日期运算。 SQL函数可以选择从用户那里获取参数,并强制返回一个值。
在更广泛的类别中,有两种类型的功能:
单行函数-单行函数是处理单行并每行返回一个输出的函数。例如,长度和大小写转换函数是单行函数。
多行函数-多行函数对一组行起作用,并为一组完整的行返回一个结果。它们也称为组功能。
单行函数可以是字符函数,数字函数,日期函数和转换函数。请注意,这些功能用于操作数据项。这些函数需要一个或多个输入参数,并在每一行上进行操作,从而为每一行返回一个输出值。参数可以是列,字面量或表达式。可以在SELECT语句,WHERE和ORDER BY子句中使用单行函数。单行功能可以是-
常规函数-通常包含NULL处理函数。类别下的功能是NVL,NVL2,NULLIF,COALESCE,CASE和DECODE。
大小写转换功能-接受字符输入并返回字符值。类别下的函数是UPPER,LOWER和INITCAP。
UPPER函数将字符串转换为大写。
LOWER函数将字符串转换为小写。
INITCAP函数仅将字符串的首字母转换为大写。
字符功能-接受字符输入并返回数字或字符值。类别下的函数为CONCAT,LENGTH,SUBSTR,INSTR,LPAD,RPAD,TRIM和REPLACE。
CONCAT函数连接两个字符串值。
LENGTH函数返回输入字符串的长度。
SUBSTR函数从给定的起点到终点返回字符串的一部分。
INSTR函数返回给定字符串字符或字符串的数字位置。
LPAD和RPAD函数将给定的字符串填充到具有给定字符的特定长度。
TRIM函数修剪从开始或结束输入的字符串。
REPLACE函数替换字符从一个给定的字符输入字符串。
日期函数-日期算术运算返回日期或数值。类别下的函数是MONTHS_BETWEEN,ADD_MONTHS,NEXT_DAY,LAST_DAY,ROUND和TRUNC。
MONTHS_BETWEEN函数返回两个日期之间的月数。
ADD_MONTHS函数将“ n”个月数添加到输入日期。
NEXT_DAY函数返回指定日期的第二天。
LAST_DAY函数返回输入日期所在月份的最后一天。
ROUND和TRUNC函数用于舍入和截断日期值。
数字功能-接受数字输入并返回数字值。类别下的函数是ROUND,TRUNC和MOD。
ROUND和TRUNC函数用于舍入和截断数字值。
MOD用于返回两个数字之间除法运算的余数。
下面的SELECT查询演示了NVL函数的用法。
SELECT first_name, last_name, salary, NVL (commission_pct,0)
FROM employees
WHERE rownum < 5;
FIRST_NAME LAST_NAME SALARY NVL(COMMISSION_PCT,0)
-------------------- ------------------------- ---------- ---------------------
Steven King 24000 0
Neena Kochhar 17000 0
Lex De Haan 17000 0
Alexander Hunold 9000 0
下面的SELECT查询演示了大小写转换函数的用法。
SELECT UPPER (first_name), INITCAP (last_name), LOWER (job_id)
FROM employees
WHERE rownum < 5;
UPPER(FIRST_NAME) INITCAP(LAST_NAME) LOWER(JOB_
-------------------- ------------------------- ----------
STEVEN King ad_pres
NEENA Kochhar ad_vp
LEX De Haan ad_vp
ALEXANDER Hunold it_prog
下面的SELECT查询演示了如何使用CONCAT函数来连接两个字符串值。
SELECT CONCAT (first_name, last_name)
FROM employees
WHERE rownum < 5;
CONCAT(FIRST_NAME,LAST_NAME)
--------------------------------
EllenAbel
SundarAnde
MozheAtkinson
DavidAustin
下面的SELECT查询演示了SUBSTR和INSTR函数的用法。 SUBSTR函数将输入字符串的一部分从第一位置返回到第五位置。 INSTR函数返回名字中字符“ a”的数字位置。
SELECT SUBSTR (first_name,1,5), INSTR (first_name,'a')
FROM employees
WHERE rownum < 5;
SUBST INSTR(FIRST_NAME,'A')
----- ---------------------
Ellen 0
Sunda 5
Mozhe 0
David 2
下面的SELECT查询演示了如何使用LPAD和RPAD漂亮地打印员工和职位信息。
SELECT RPAD(first_name,10,'_')||LPAD (job_id,15,'_')
FROM employees
WHERE rownum < 5;
RPAD(FIRST_NAME,10,'_')||
-------------------------
Steven____________AD_PRES
Neena_______________AD_VP
Lex_________________AD_VP
Alexander_________IT_PROG
下面的SELECT查询演示了ROUND和TRUNC函数的用法。
SELECT ROUND (1372.472,1)
FROM dual;
ROUND(1372.472,1)
-----------------
1372.5
SELECT TRUNC (72183,-2)
FROM dual;
TRUNC(72183,-2)
---------------
72100
下面的SELECT查询显示了一个日期算术函数,其中完成了雇员雇用日期和sysdate之差。
SELECT employee_id, (sysdate - hire_date) Employment_days
FROM employees
WHERE rownum < 5;
EMPLOYEE_ID EMPLOYMENT_DAYS
----------- ---------------
100 3698.61877
101 2871.61877
102 4583.61877
103 2767.61877
下面的SELECT查询演示了MONTHS_BETWEEN,ADD_MONTHS,NEXT_DAY和LAST_DAY函数的用法。
SELECT employee_id, MONTHS_BETWEEN (sysdate, hire_date) Employment_months
FROM employees
WHERE rownum < 5;
EMPLOYEE_ID EMPLOYMENT_MONTHS
----------- -----------------
100 121.504216
101 94.3751837
102 150.633248
103 90.9558289
SELECT ADD_MONTHS (sysdate, 5), NEXT_DAY (sysdate), LAST_DAY (sysdate)
FROM dual;
ADD_MONTH NEXT_DAY( LAST_DAY(
--------- --------- ---------
01-JAN-14 05-AUG-13 31-AUG-13