字符函数:对字符串操作。
数字函数:对数字进行计算,返回一个数字。
转换函数:可以将一种数据类型转换为另外一种数据类型。
日期函数:对日期和时间进行处理。
空值函数
多行函数
以下例子所使用的表为:
SQL> select * from dept;
DEPTNO DNAME LOC
---------- ---------------------------- --------------------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
一、字符函数
1、initcap 首字母大写
SQL> select initcap(dname) from dept;
INITCAP(DNAME)
----------------------------
Accounting
Research
Sales
Operations
2、upper 转大写
SQL> select upper(dname) from dept;
UPPER(DNAME)
----------------------------
ACCOUNTING
RESEARCH
SALES
OPERATIONS
3、lower 转小写
SQL> select lower(dname) from dept;
LOWER(DNAME)
----------------------------
accounting
research
sales
operations
4、concat(string1,string2) 字符串连接,只能连接两个字符串
SQL> select concat(concat(dname,q'['s no is ]'),deptno) from dept;
CONCAT(CONCAT(DNAME,Q'['SNOIS]'),DEPTNO)
--------------------------------------------------------------------------------
ACCOUNTING's no is 10
RESEARCH's no is 20
SALES's no is 30
OPERATIONS's no is 40
5、substr(string,number1,number2) 字符串截取,从number1截取到number2
SQL> select substr(dname,2,4) from dept;
SUBSTR(DNAME,2,4)
--------------------------------
CCOU
ESEA
ALES
PERA
6、length 字符串长度
SQL> select length(dname) from dept;
LENGTH(DNAME)
-------------
10
8
5
10
7、instr(string,str [,N]) 从string的第N位开始查找str,返回位数 N可省略
SQL> select dname,instr(dname,'A') from dept;
DNAME INSTR(DNAME,'A')
---------------------------- ----------------
ACCOUNTING 1
RESEARCH 5
SALES 2
OPERATIONS 5
SQL> select dname,instr(dname,'A',2) from dept;
DNAME INSTR(DNAME,'A',2)
---------------------------- ------------------
ACCOUNTING 0
RESEARCH 5
SALES 2
OPERATIONS 5
8、trim(str from string) 截取 把string的两边截取str
SQL> select trim('a' from 'aaabbbcccaaa') from dual;
TRIM('A'FROM
------------
bbbccc
9、replace 替换
SQL> select replace(dname,'A','a') from dept;
REPLACE(DNAME,'A','A')
----------------------------
aCCOUNTING
RESEaRCH
SaLES
OPERaTIONS
10 、ASCII 字符转换位ASCII码
SQL> select ASCII('a') from dual;
ASCII('A')
----------
97
二、数字函数
1、abs 取绝对值
SQL> select abs(-10) from dual;
ABS(-10)
----------
10
2、mod 取余
SQL> select mod(20,3) from dual;
MOD(20,3)
----------
2
3、trunc 近似,直接截
SQL> select trunc(1234.536,2),trunc(1234.536,0),trunc(12234.536,-2) from dual;
TRUNC(1234.536,2) TRUNC(1234.536,0) TRUNC(12234.536,-2)
----------------- ----------------- -------------------
1234.53 1234 12200
4、round 近似,四舍五入
SQL> select round(1234.536,2),round(1234.536,0),round(12234.536,-2) from dual;
ROUND(1234.536,2) ROUND(1234.536,0) ROUND(12234.536,-2)
----------------- ----------------- -------------------
1234.54 1235 12200
三、转换函数
数据类型分为:
数字 NUMBER
字符 CHAR
日期 DATE
to_number()
SQL> select to_number('$102.234','$999.999') from dual;
TO_NUMBER('$102.234','$999.999')
--------------------------------
102.234
to_char()
数字转换为字符,9:指定位置显示数字 . :指定位置返回小数点 ,:指定位置返回逗号 $:美元 L:本地货币
SQL> select to_char(19533.268,'$999,999.999') from dual;
TO_CHAR(19533.268,'$999,99
--------------------------
$19,533.268
日期转换为字符,必须用单引号引起来,区分大小写,如果日期转字符,要指定有效的日期格式
SQL> select to_char(sysdate,'yyyy/mm/dd hh:mi:ss') from dual;
TO_CHAR(SYSDATE,'YYYY/MM/DDHH:MI:SS')
--------------------------------------
2019/02/26 05:02:58
to_date()
SQL> select to_date('2019-02-26','yyyy-mm-dd') from dual;
TO_DATE('201
------------
26-FEB-19
四、日期函数
months_between() 两个日期之间隔几个月
SQL> select months_between(to_date('2020-09-01','yyyy-mm-dd'),sysdate) months from dual;
MONTHS
----------
18.1704689
add_months()
SQL> select add_months(sysdate,3) from dual;
ADD_MONTHS(S
------------
26-MAY-19
round() 日期的四舍五入 时间过半入
SQL> select round(sysdate,'mm') from dual;
ROUND(SYSDAT
------------
01-MAR-19
五、空值函数
SQL> select * from dept;
DEPTNO DNAME LOC
---------- ---------------------------- --------------------------
50 op
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
1、nvl(X,value) 若X为空,则返回一个值
SQL> select nvl(loc,'beijing') from dept;
NVL(LOC,'BEIJING')
--------------------------
beijing
NEW YORK
DALLAS
CHICAGO
BOSTON
2、nvl2(expr1,expr2,pxrt3):expr1为非空,返回expr2;若为空,返回expr3
SQL> select nvl2(loc,'new york','beijing') from dept;
NVL2(LOC,'NEWYOR
----------------
beijing
new york
new york
new york
new york
3、nullif(expr1,expr2):相同返回空,不同返回expr1
SQL> select nullif(12,34) from dual;
NULLIF(12,34)
-------------
12
SQL> select nullif(12,12) from dual;
NULLIF(12,12)
-------------
4、coalesce(expr1,expr2,...,pxren):返回第一个不为空的值
SQL> select coalesce(null,12,null,34) from dual;
COALESCE(NULL,12,NULL,34)
-------------------------
12
六、分组函数
SQL> select ename,sal from emp;
ENAME SAL
-------------------- ----------
SCOTT 3000
KING 5000
FORD 3000
1、count()
SQL> select count(1) from emp;
COUNT(1)
----------
3
2、avg()
SQL> select avg(sal) from emp;
AVG(SAL)
----------
3666.66667
3、sum()
SQL> select sum(sal) from emp;
SUM(SAL)
----------
11000
4、max() min()
SQL> select max(sal) from emp;
MAX(SAL)
----------
5000