第03章 函数

1 Oracle的函数
Oracle的函数和java中的方法一样, 能完成一定的功能

2 字符处理类函数
--需求1:把ename字段转换成小写
select lower(ename) from emp;
--需求2:查询scott用户的用户名称和账户状态
select username,account_status from dba_users where username='scott'; --查询不到
select username,account_status from dba_users where lower(username)='scott'; --可查询到
--字符转换大写
select upper('aaa') from dual;
--将每个单词的首字母转换成大写(单词之间使用空格隔开)
select initcap('lan qiao bei') from dual;
--字符串连接
select concat('lan',concat('qiao','bei')) from dual;
--字符串截取substr(input,m,[n]) m:截取的起始位置 n:截取的字符个数
select substr('我爱蓝桥', 2) from dual;
select substr('我爱蓝桥', 2,1) from dual;
--字符长度
select length('我爱蓝桥') from dual;
--查找字符出现的位置instr(input,char,[m],[n]) m:查询的起始位置 n:查询第几次出现
select instr('我爱蓝桥,我爱蓝桥的老师','爱') from dual;
select instr('我爱蓝桥,我爱蓝桥的老师','爱',1,2) from dual;
--字符串替换replace(input,char1,char2)
select replace('我爱蓝桥,我爱蓝桥老师','爱','更爱') from dual;
--从左边或者右边使用指定字符串填充 lpad(input,n,char) rpad(input,n,char) n:填充后的字符长度(汉字算2个字符)
select lpad('我爱蓝桥',10,'a') from dual;
select rpad('我爱蓝桥',10,'a') from dual;
3 数字函数
--四舍五入函数round(n,i) n:数字 i:小数点长度
select round(22.5) from dual;
select round(22.555,2) from dual;

--截取数字trunc(n,i) n:数字 i:小数点长度
select trunc(22.99) from dual;
select trunc(22.559,2) from dual;

ceil:往上取整,与小数位的大小无关
floor:往下取整,与小数位的大小无关.
mod:取余。求模。
4 日期函数
--ADD_MONTHS(d,f):指定时间d,推移f月,得到推移后的时间
--例:在“2010-05-12”时间上推移3个月后的时间
select ADD_MONTHS(to_date('2012-05-12','yyyy-mm-dd'),3) from dual;

--Months_between(d1,d2):显示两个时间相差的月份,d1:第一个时间,d2:第二个时间
--注意:必须注意的是,d1与d2都为Date类型,不然会出现错误。
--例:计算 2012-12-12 与 2012-2-12 相差的月份。
SELECT MONTHS_BETWEEN(to_date('2012-12-12','yyyy-MM-dd'),
to_date('2012-2-12','yyyy-MM-dd'))FROM dual;

--last_day(m):返回特定日期所在月份的最后一天
--例:计算“2010-10-12”所在月份的最后一天
SELECT last_day(to_date('2010-10-12','yyyy-mm-dd')) FROM dual;

--next_day(x,y)用于计算x时间后第一个星期y的时间。
--例子,当前时间是2014-08-15
select next_day(to_date('2014-08-15','yyyy-mm-dd'),'星期二')from dual;
--返回的结果是: 2014-08-19

--trunc(date,[fmt]):处理时间
--date:一个日期值
--fmt :日期格式,该日期将由指定的元素格式所截去。忽略它则由最近的日期截去

--例:
trunc(sysdate,'yyyy') --返回当年第一天.
trunc(sysdate,'mm') --返回当月第一天.
trunc(sysdate,'d') --返回当前星期的第一天.
trunc(sysdate,'dd')--返回当前年月日
trunc(sysdate, 'hh')--返回当前小时
trunc(sysdate, 'mi')--返回当前分钟

--trunc(number,[decimals]):处理数字
--number: 待做截取处理的数值
--decimals:指明需保留小数点后面的位数。可选项,忽略它则截去所有的小数部分
--例:
TRUNC(89.985,2)=89.98
TRUNC(89.985)=89
TRUNC(89.985,-1)=80

5 转换函数
--to_char:日期转化为字符串
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') as nowTime from dual;
--获取时间的年
select to_char(sysdate,'yyyy') as nowYear from dual;
--获取时间的月
select to_char(sysdate,'mm') as nowMonth from dual;
--获取时间的日
select to_char(sysdate,'dd') as nowDay from dual;
--获取时间的时
select to_char(sysdate,'hh24') as nowHour from dual;
--获取时间的分
select to_char(sysdate,'mi') as nowMinute from dual;
--获取时间的秒
select to_char(sysdate,'ss') as nowSecond from dual;
--to_date:把字符串类型日期转换为date类型日期。
select to_date('2014-02-11','yyyy-mm-dd') from dual

--需求3:查询入职日期在‘1981-2-20 12:34:56’之后的员工的姓名和入职日期
select ename,hiredate from emp where hiredate>to_date('1981-2-20 12:34:56','YYYY-MM-DD HH24:MI:SS');

6 通用函数
--nvl函数 NVL(参数1,参数2)
select nvl(null,'空') from dual;
select nvl('非空','我不会输出') from dual;

--decode函数decode(参数一,参数二,参数三,....)
select decode(JOB,
'CLERK','业务员',
'MANAGER','经理',
'SALESMAN','销售员',
'PRESIDENT','老板',
'ANALYST','分析员'
) from emp;

--case when
select ename,case job
when 'CLERK' then '业务员'
when 'MANAGER' then '经理'
when 'SALESMAN' then '销售员'
when 'PRESIDENT' then '老板'
when 'ANALYST' then '分析员'
else '其它'
end case
from emp;

2018.5.25 Oracle相关的函数命令的更多相关文章

  1. Linux下使用ps命令来查看Oracle相关的进程

    Linux下可以使用ps命令来查看Oracle相关的进程 Oracle Listener 这个命令会列出Oracle Net Listener的进程 [oracle@ www.linuxidc.com ...

  2. Linux下可以使用ps命令来查看Oracle相关的进程

    Linux下可以使用ps命令来查看Oracle相关的进程 Oracle Listener 这个命令会列出Oracle Net Listener的进程 [oracle@ www.linuxidc.com ...

  3. [ SHELL编程 ] 编程常用的ORACLE相关命令

    本文主要描述shell编程中常用的Oracle相关命令. 1.sqlplus -L/-S参数 sqlplus -L user/password #-L参数表示用户只尝试登录一次, 而不是在出错时再次提 ...

  4. PL/SQL详细介绍,设置oracle相关

    1. 实现参照完整性      指若两个表之间具有主从关系(即主外键关系),当删除主表数据时,必须确保相关的从表数据已经被删除.  当修改主表的主键列数据时,必须确保相关从表数据已经被修改.为了实现级 ...

  5. Linux下的启动oracle的EM的命令

    Linux下的启动oracle的EM的命令 1.启动数据库 su - oracle $sqlplus / as sysdba sql>startup 2.启动监听 $lsnrctl LSNRCT ...

  6. 个人永久性免费-Excel催化剂功能第56波-获取Excel对象属性相关自定义函数

    之前零散开发过一些自定义函数获取Excel对象属性,此次再细细地把有价值的属性都一一给开发完成,某些场景下,有这些小函数还是可以比较方便地实现一些通过Excel界面没法轻松获取到的信息. 修复与更新 ...

  7. Oracle数据库导入导出命令总结

    Oracle数据导入导出imp/exp就相当于oracle数据还原与备份.exp命令可以把数据从远程数据库服务器导出到本地的dmp文件,imp命令可以把dmp文件从本地导入到远处的数据库服务器中.利用 ...

  8. Oracle数据库导入导出命令总结 (详询请加qq:2085920154)

    分类: Linux Oracle数据导入导出imp/exp就相当于oracle数据还原与备份.exp命令可以把数据从远程数据库服务器导出到本地的dmp文件,imp命令可以把dmp文件从本地导入到远处的 ...

  9. Oracle日期时间函数大全

    ORACLE日期时间函数大全 TO_DATE格式(以时间:2007-11-02 13:45:25为例) Year: yy two digits 两位年 显示值:07 yyy three digits ...

随机推荐

  1. 如何看待 Kotlin 成为 Android 官方支持开发语言

    Google IO 2017宣布了 Kotlin 会成为 Android 官方开发语言.一时间朋友圈和Android圈被各种刷屏.当然我也顺势而为发布了一篇的文章<为什么我要改用Kotlin&g ...

  2. HDU2047 阿牛的EOF牛肉串

    题目:https://blog.csdn.net/qq_40932661?t=1 表面上看去似乎无从下手.但是可以从前面地推出后面的 递推: 假如涂第N个位置,有两种可能,①涂O ②不涂O. 如果涂O ...

  3. php模拟post提交数据

    $data = '{ "id": "17999030", "method": "sayHello", "jso ...

  4. MD5WLBUtil

    import java.io.UnsupportedEncodingException; import java.security.NoSuchAlgorithmException; import j ...

  5. Spark Mllib里的卡方检验

    不多说,直接上干货! import org.apache.spark.mllib.stat.Statistics 具体,见 Spark Mllib机器学习实战的第4章 Mllib基本数据类型和Mlli ...

  6. net core 的Generic Host 之Generic Host Builder

    前言 通用Host(Generic Host) 与 web Host 不同的地方就是通用Host解耦了Http请求管道,使得通用Host拥有更广的应用场景.比如:消息收发.后台任务以及其他非http的 ...

  7. Java编程中中文乱码问题的研究及解决方案

    0 引言 Java最大的特性是与平台的无关性及开发环境的多样性.字符串被Java应用程序转化之前,是根据操作系统默认的编码方式编码.Java语言内部采用Unicode编码,它是定长双字节编码,即任何符 ...

  8. Primefaces dataTable设置某个cell的样式问题

    设置primefaces dataTable的源网段列的Cell可以编辑,当回车键保存时,判断是否输入的网段合法,如果不合法就显示警告信息,并将这个不合法的数据用红色表示.问题是,怎么给这一个cell ...

  9. 经典SQL语句集锦(收藏版)

    文章来源:http://www.cnblogs.com/herbert/archive/2010/07/02/1770062.html SQL分类: DDL—数据定义语言(CREATE,ALTER,D ...

  10. JQuery使用正则表达式验证手机号,邮箱,身份证(含有港澳台),网址

    自己对正则验证也没系统用过,这次自己做个demo,一下子把这些全都用上了,下次有需要直接来拿了. 以下代码是在页面使用JQuery进行验证的,也有在后台进行验证的,可以试试,都一样的原理. 直接上代码 ...