字符函数:对字符串操作。

数字函数:对数字进行计算,返回一个数字。

转换函数:可以将一种数据类型转换为另外一种数据类型。

日期函数:对日期和时间进行处理。

空值函数

多行函数

以下例子所使用的表为:

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