12709

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

<!-- flowchart 箭头图标 勿删 --> <svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path></svg><h2>Oracle的单行函数(SQL函数)</h2>

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

大小写控制函数:

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,否则继续往下匹配,直到有匹配的值为止。假如没有匹配的值,最终将返回一个空值。

来源:51CTO

作者:千万中国少女的梦

链接:https://blog.csdn.net/yb970521/article/details/100126058

Recommend