Oracle之单行函数

本文介绍了数据库中的单行函数,包括字符函数、数值函数、日期函数、转换函数及通用函数NVL和DECODE的使用方法与实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

单行函数

单行函数是每个数据库的“特色”函数。

单行函数语法:

function_name(column|expression,[arg1,arg2,…]);
参数说明:

  • function_name: 函数名称
  • column:                数据库列名
  • expression:           字符串或计算表达式
  • arg1,arg2:           在函数中使用参数    

单行函数分类:

  • 字符函数:接受字符输入并返回字符或数值
  • 数值函数:接受数值输入并返回数值
  • 日期函数:对日期数据进行操作
  • 转换函数:从一种数据类型转换为另一种数据类型
  • 通用函数:NVL函数、DECODE函数


1.字符函数

i)UPPER("varchar2")/lower("varchar2")

· 将小写字母转换为大写。

SELECT UPPER('smith') FROM DUAL ;
· 将大写转换为小写。

SELECT LOWER('HELLOWORLD') FROM dual ;

ii)INITCAP("varchar2")

· 将首字母转为大写。

SELECT INITCAP(ename) FROM emp ;


iii)concat()

· 字符串连接。

SELECT CONCAT('hello ','world') FROM DUAL ;

iv) 

  • 字符串截取:substr() --substr(varchar,num1,num2)截取函数从0和从1效果一样,都是从首位。varchar是字段,num1是位置,可以用负数,num2 是长度。
  • 字符串长度:length()
  • 内容替换:    replace()
SELECT substr('hello',1,3) 截取字符串,length('hello') 字符串长度,replace('hello','l','x') 字符串替换 FROM DUAL ;


2.数值函数

  • 四舍五入:         ROUND()
  • 截断小数位:     TRUNC()
  • 取余(取模): MOD 
i)ROUND()
· ROUND()四舍五入:
SELECT ROUND(789.536) FROM dual ;

·ROUND(num1,num2)--第一个是被操作数,第二个截取的位数。
SELECT ROUND(789.536,2) FROM dual ;

SELECT ROUND(789.536,-2) FROM dual ;·--这段读不懂。。

ii)TRUNC()
· TRUNC(num)不会保留任何的小数,直接砍掉。
SELECT TRUNC(789.536) FROM DUAL ;
· TRUNC(num1,num2) num1被操作数,num2保留的小数位数。
SELECT TRUNC(789.536,2) FROM DUAL ;

iii)MOD()
· MOD(num1,num2) num1 被除数,num2除数。
SELECT MOD(10,3) FROM DUAL ; --答案1。

3.日期函数
  •  SYSDATE 

· 系统当前时间

SELECT SYSDATE FROM DUAL ;
·也可以求星期数

SELECT empno,ename,ROUND((SYSDATE-hiredate)/7) FROM emp ;


  • MONTHS_BETWEEN():   求出给定日期范围的月数
  • ADD_MONTHS():           在指定日期加上指定的月数,求出之后的日期
  • NEXT_DAY():                  下一个的浸提那是哪一个日期
  • LAST_DAY():                   求出给定日期的最后一天日期 
i)MONTHS_BETWEEN()
· 两者之间的月份
SELECT empno,ename,ROUND(MONTHS_BETWEEN(sysdate,hiredate)) FROM emp ;	--hiredate,表中的时间。

ii)ADD_MONTHS()
· 在某时间上添加几个月
SELECT ADD_MONTHS(SYSDATE,4) FROM DUAL ;

iii)NEXT_DAY()
· 求出下一次给定的日期数
SELECT NEXT_DAY(SYSDATE,'星期一') FROM DUAL ;

iv)LAST_DAY()
· 求出某日期当月的最后一天

SELECT LAST_DAY(SYSDATE) FROM DUAL ;

4.转换函数

  • TO_CHAR():转换为字符串
  • TO_NUMBER():转换成数字
  • TO_DATE():转换成日期
i)TO_CHAR()
·对日期进行拆分,使用固定的通配符。
SELECT empno,ename,TO_CHAR(hiredate,'yyyy') year ,
TO_CHAR(hiredate,'mm') months ,
TO_CHAR(hiredate,'dd') day
FROM emp ;

·将日期的显示格式进行转换
SELECT empno,ename,TO_CHAR(hiredate,'yyyy-mm-dd') FROM emp ;

·对数字加入一些符号(必须用9代表一个数字)
SELECT empno,ename,TO_CHAR(sal,'99,999') FROM emp ;

-----· $:表示美元
-----· L :表示Local的缩写,以本地的语言进行金额显示(中国的就是¥)
SELECT empno,ename,TO_CHAR(sal,'$99,999')FROM emp ;

ii)TO_NUMBER()
· 将字符串变为数字的一种函数
SELECT TO_NUMBER('123') + TO_NUMBER('123') FROM DUAL;   --结果是246.

iii)TO_DATE()
·将一个字符串变为DATE型的数据。
SELECT TO_DATE('2009-02-16','yyyy-mm-dd')FROM DUAL ;--输出Oracle默认的日期。  16-2月 -09。当然假如是2109年和2009年在此无法分辨。

5.通用函数

i)员工年薪=(基本工资+奖金)*12.

SELECT empno,ename,(sal+comm)*12 FROM emp ;

因为有的员工奖金是null,数值与null值计算后还是null。

·可以采用NVL函数,可将一个指定的NULL值变为指定的内容。

SELECT empno,ename,NVL(comm,0),(sal+NVL(comm,0))*12 income FROM emp ;



· 如果需要进行计算的时候,对于NULL必须使用NVL()进行一个转换操作。


·DECODE() == 等同于switch

SELECT DECODE(1,1,'内容是1',2,'内容是 2',3,'内容是3')FROM DUAL;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值