加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

oracle数据库中的单行函数

发布时间:2020-12-12 13:31:32 所属栏目:百科 来源:网络整理
导读:在数据库里为了方便用户的开发,往往会提供有一系列的支持函数,利用这些函数可以针对于数据进行处理。 一、字符串函数 ? ? ? ?字符串函数可以针对字符串处理,有如下几种:UPPER()、LOWER()‘、INITCAP()、REPLACE()、LENGTH()、SUBSTR()。 ? ? 1、大小写转
在数据库里为了方便用户的开发,往往会提供有一系列的支持函数,利用这些函数可以针对于数据进行处理。 一、字符串函数 ? ? ? ?字符串函数可以针对字符串处理,有如下几种:UPPER()、LOWER()‘、INITCAP()、REPLACE()、LENGTH()、SUBSTR()。 ? ? 1、大小写转换函数 ?? ?? ? ? ?1、转大写函数:字符串UPPER(列|字符串) ? ? ? ? ? ?2、转小写函数:字符串LOWER(列|字符串) ? ? 范例:将emp表中的雇员名字全部变成小写(大写) ? ? ? ? ? ? SELECT? LOWER(ename) FROM EMP;? ? ?--转小写 ? ? ? ? ? ? ?SELECT? UPPER(ename) FROM EMP;? ? ? --转大写 ? ? 2、首字母大写函数 ?? ?? ? ?语法:INITCAP(列| 字符串) ? ? ? ? ?范例:将emp表中的雇员的姓名首字母大写: ? ? ? ? ?SELECT INITCAP(ename) FROM emp; ? ? 3、计算字符串的长度 ?? ??? ???范例:查询出每个雇员姓名以及雇员姓名的长度 ? ? ? ? ? ?SELECT ename ,length(ename) from emp; ? ? 4、字符串替换 ?? ??? ?语法为:字符串REPLACE(列|数据,要查找的内容,新的内容) ? ? ? ? ?范例:将所有雇员姓名之中的字母A替换为“_” ?? ??? ?SELECT REPLACE(ename,UPPER(‘a‘),‘_‘) FROM emp; ? ?? ??? ?范例:利用replace()函数消除字符串中的空格数据 ?? ??? ?SELECT REPLACE(‘hello world nihao zaijian‘,‘ ‘,‘‘) ?? ??? ?FROM dual;???--dual为虚拟表 ? ? 5、字符串的截取 ?? ???语法一:字符串SUBSTR(列|数据,开始点),从指定的开始点一直截取到结尾; ? ? ? 语法二:字符串SUBSTR(列|数据,开始点,长度):截取指定范围的子字符串。 ?? ??? 注意:SUBSTR()函数位数的计算是从1开始的,(下标是以1开始的) ? ?? ??? ?范例:从指定位置截取到结尾 ?? ??? ?SELECT SUBSTR(‘helloworldnihao‘,11) FROM dual; ---从第十一位开始一直截 取到最后 ? ?? ??? ?范例:截取指定范围的部分数据 ?? ??? ?SELECT SUBSTR(‘helloworldnihao‘,6,5) ?? ??? ?FROM dual;????---从第六位开始截取,总共截取5位 ? 二、数值函数 ? ? ? ? 数值函数就是针对数字进行处理的:ROUND(),TRUNC(),MOD()。 ?? ?? ? 1、四舍五入函数 ?? ??? ?? ? 语法:ROUND (列 |数字 ,【保留小数位】) ?? ??? ?? ? 注意:如果不设置保留小数位,则表明不保留小数,取整 ? ? ? ? ?范例: ?? ??? ?? ?SELECT ROUND (2.33333,2),ROUND(2.33333),ROUND(2.777,2)FROM dual; ? ? ? ? ? ? //答案:2.33? ,2?,2.78 ? ?? ?? ? 2、截取小数,所有的小数都不四舍五入 ? ? ? ? ? ??语法:数字 TRUNC(列|数字,[小数位])。 ?? ??? ?? ? 范例: ?? ??? ?? ? SELECT? TRUNC(2.3333,TRUNC(2.77777,2)? FROM dual; ? ? ? ? ? ? ?//答案:2.33? ?,2.77 ?? ?? ? 3、求模(求余数) ?? ?? ???? ?语法:MOD(列1|数字1,列2|数字2) ?? ??? ?? ? 范例:SELECT MOD (10,3) FROM dual;----求10/3的余数 ? ? 三、日期函数 ?? ?? ? ? ?1、 获取系统时间: ? ? ? ? ? ? SELECT? sysdate FROM dual;----输出当前时间的年月日 ? ? ? ? ? ? SELECT systimestamp FROM dual ; ---输出当前时间包括时分秒 ?? ??? ?? ? 2、时间的计算: ?? ??? ??? ?日期 + 数字 = 日期(若干天之后的日期) ? ? ? ? ? ? 日期 - 数字 = 日期(若干天之前的日期) ?? ??? ??? ?日期 - 日期 = 数字 (两个日期间的天数) ? ?? ??? ?? ? 范例:计算若干天之后的日期 ?? ??? ??? ?SELECT SYSDATE+30 FROM dual;? ?----当前日期向后推后30天的日期 ? ?? ??? ?? ? 3、计算两个日期间的月数,不用天数来显示,增强可读性 ?? ??? ?? ? 语法:MONTH_BETWEEN(日期1,日期2) ? ?? ??? ??? ?范例:?计算每一位雇员到今天位置的雇佣总月数。 ?? ??? ??? ?SELECT ename,hiredate,MONTHS_BETWEEN(SYSDATE,hiredate) ? ? ? ? ? ? ?FROM emp; ? ?? ??? ?? ? 4、增加若干月之后的日期 ?? ??? ??? ?? ? 语法:ADD_MONTHS(日期,月数) ?? ??? ??? ?? ? 范例:从当前日期向后推后四个月的日期 ?? ??? ??? ??? ?SELECT ADD_MONTHS(SYSDATE,4) FROM dual; ? ?? ??? ?? ? 5、计算指定的日期所在的月份的最后一天 ?? ??? ??? ?? ? 语法: LAST_DAY(日期) ?? ??? ??? ?? ? 范例:计算当前时间的这个月的最后一天 ?? ??? ??? ??? ?SELECT LAST_DAY(SYSDATE) FROM dual; ? ?? ??? ?? ? 6、 计算指定日期的下个星期中的任意一天的日期 ?? ??? ??? ??? ?? ?语法:next_day (日期,星期(一、二、三.....日)) ?? ??? ??? ??? ?? 范例:计算下一个星期二的具体日期 ?? ??? ??? ??? ??? SELECT NEXT_DAY(SYSDATE,‘星期二‘) FROM dual; ? ? ?四、转换函数 ?? ??? ?所以所谓的转换函数是实现字符串与日期、数字的转换。 转换函数一共提供三种:TO_CHAR()、TO_DATE()、TO_NUMBER(). ? 1.转换字符串函数,数字或者是日期可以转换为字符串。 语法:TO_CHAR(列|日期|数字,转换格式) 对于转换格式而言主要有两类格式: -日期转换为字符串:年(yyyy)、月(mm)、日(dd)、时(hh、hh24)、分(mi)、秒(ss); -数字转换为字符串:任意的一位数字(9)、货币(L,本地货币)。 ? 范例:格式化输出日期 SELECT TO_CHAR(SYSDATE,‘YYYY-MM-DD hh24:mi:ss‘) FROM dual; 范例:实现数字的转换,增加可读性 SELECT TO_CHAR(456159784,‘L999,999,999‘) FROM dual; ? 注意:以上的转换操作将日期数据最终转换为了字符串,这种转换实际上破坏了程序的一致性。 但是TO_CHAR()函数也有好处:他可以实现年、月、日的拆分。 范例:查询出每个雇员的编号、姓名、雇佣年份 SELECT empno,ename,TO_CHAR(hiredate,‘yyyy‘) year FROM emp; 范例:查询出所有在2月雇佣的雇员信息
SELECT * FROM emp WHERE TO_CHAR(hiredate,‘mm‘)=‘02‘; ? 2、转换日期函数 ? ? 语法:TO_DATE(字符串,转换格式) ? ? ?转换格式:年(yyyy)、月(mm)、日(dd)、时(hh、hh24)、分(mi)、秒(ss); ? 范例:实现字符串转换为日期 ?? ?SELECT TO_DATE(‘1998-09-19‘,‘yyyy-mm-dd‘) FROM dual; ? 3、转数字函数 ? ?将由数字构成的字符转换为数字 ? 语法:TO_NUMBER(字符) ? ? 范例:SELECT TO_NUMBER(‘1‘) + TO_NUMBER(‘2‘) FROM dual; ? 五、通用函数 ? ? 1、空(null)处理函数:? ? NVL?? ?? 原因:因为在进行计算的时候,null与任何数据进行计算,结果都为空,这样不符合我们的数据处理原则,因此我们应该在发现需要计算的数据为null的时候,将其用0来代替。 语法:NVL(列|null,替代的值)。如果现在列上的内容为null则使用默认值来代替(一般用0来代替)。 范例:comm存在空,将这列为空的数据用0来代替 SELECT empno,job,sal,NVL(comm,0),(sal+NVL(comm,0))*12 income FROM emp;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读