欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Oracle学习——单行函数——字符函数、数值函数、日期和时间函数、转换函数、通用函数

程序员文章站 2022-05-30 10:21:32
...

Oracle的单行函数(SQL函数)

字符函数:输入参数为字符类型,返回值时字符或数字类型

大小写控制函数:

	UPPER(char) :将字符串转换为大写格式

	LOWER(char): 转换小写格式  

    INITCAP(char):首字母大写
    
			Select * from emp where job = upper(‘salesman’);

字符控制函数:

CONCAT(str1,str2):用于字符串连接。

Concat(‘hello’,’orale’)  输出结果 hellooracle  

SUBSTR(char,m[n]):

用于截取字符串,char为指定字符串 m为截取位置。(m=0从首位,m为负数,从尾部开始)n为截取长度。

LENGTH(char):

返回字符串长度 空格也算长度 。

INSTR(char1,char2,[n,[m]]):

该函数用于取得子串在字符串中的位置,char1源串,char2子串,n用于指定起始搜索位置,m指定子串第m次出现的次数,默认值为1

Instr(‘hello oracle hello oracle’,’ oracle’,1,2)   结果 20

LPAD(cahr1,n,cha2):

用于在字符串的左端填充字符,char1源字符串,char2被填充字符,n指定填充后char1的总长度。

Lpad(‘hello’,10,’#’)   结果#####hello

RPAD(char1,n,char2):右侧填充字符,同上↑

REPLACE(char,search_string[,replacement_string]):

用于替换字符串的子串内容。Char指定源字符串,search_string 被替换字符串 replacement_string
替换字符串

Replace(‘hello oracle’,’oracle’,’world’) 结果 hello world

数值函数:输入参数和返回值都是数字类型

ROUND(n[,m]):

用于返回四舍五入的结果,n任意数字,m必须整数

		Round(25.328)         	25
		Round(25.328,2)      	25.33
		Round(25.328,-1)      	30

TRUNC(n[,m]):

截取数字,n任意数字,m必须整数

		trunc(25.328)       	25
		trunc(25.328,2)     	25.32
		trunc(25.328,-1)    	20

MOD(m,n):求模(求余数) m/n 如果n为0 则返回m

		mod(25,6)      			1
		mod(25,0)      			25

日期和时间函数

SYSDATE:返回当前系统日期

		select sysdate from dual;
			select sysdate-1 昨天,sysdate 今天,sysdate+1 明天 from dual;

MONTHS_BETWEEN(d1,d2):

返回日期d1和d2之间相差的月数,d1>d2为正数,否则为负数。

//计算员工入职多长时间

Select months_between(sysdate,hiredate) from emp;       //hiredate为入职日期

Select round(months_between(sysdate,hiedate))/12 from emp;

ADD_MONTHS(d,n):

用于返回特定日期之前或之后的月份所对应的时间,d指定日期时间,n代表月份,可以是任意整数

//查询每位员工入职30年后的年份

			Select ename,add_months(hiredate,30*12) from emp;

NEXT_DAY(d,char):

返回特定日期之后的第一个工作日所对应的日期,d指定日期时间值,char指定工作日(工作日必须与日期语言匹配)

//查询下周一的日期

		Select sysdate,next_day(sysate,’星期一’) from dual;

LAST_DAY(d):
返回特定日期所在月份的最后一天

	Select sysdate,last_day(sysdate) from dual;
	
		//每月最后一天入职的员工有哪些
		
				Select empno,ename,hiredate from emp where hiredate=last_day(hiredate);

ROUND(d[,fmt]):

返回日期时间的四舍五入结果 d日期fmt方式(如year)

转换函数

将数据从一种数据类型转换为另一种数据类型(oracle可以自动转换)

	TO_CHAR():日期类型 转换成字符类型
	TO_DATE():字符类型转换成日期类型
	TO_NUMBER():字符类型转换成数字类型
	TO_CHAR():数字类型转换成字符类型

通用函数:

适用于任何数据类型和空值
NVL(expr1,epr2): 用于处理null如果expr1是null返回expr2 否返回expr1

Select ename,sal,comm,sal+nvl(comm,0) from emp;

NVL2(expr1,expr2,expr3): 用于处理null如果expr1不是null返回expr2 否则返回expr3

Select ename,sal,comm,nvl2(comm,sal+comm,sal) from emp ;

NULLIF(expr1,expr2):

用于比较表达式expr1和expr2,如果相等返回null,否则返回expr1。

//查询所有员工的入职信息,并把本月初入职的员工与其他员工区分
Select empno,ename,hiredate,nullif(hiredate,trunc(sysdate,’MONTH’)) from emp

COALESCE(expr1[,expr2][,…]):

从第一个开始匹配,如果等于expr1 则返回expr1,否则继续往下匹配,直到有匹配的值为止。假如没有匹配的值,最终将返回一个空值。