--1.字符函数
--UPPER(string|column) 可以将字符转成大写
select upper('helloword') from dual;
select upper(ename) from emp;

--LOWER(string|column) 将指定的字符串转换成小写
select lower('HELLOWORD') from dual;
select lower(ename) from emp;

--INITCAP(string|column) 将单词的第一个字母大写
select initcap ('hello word') from dual;
--员工姓名首字母大写,只要首字母大写,其他都变成小写
select initcap(ename) from emp;

--LENGTH(string|column)计算字符串的长度
select length('helloword') from dual;
select ename ,length(ename) 长度 from emp;
--查询姓名长度等于5的员工
select ename,length(ename) from emp where length(ename) = 5;

--REPLACE(string|column)替换字符串
select replace(ename,'A','_') 替换后 from emp;

-- CONCAT(string1,String2)拼接字符串 || --> 拼接符号 只能有两个参数
select concat('hello','word') 拼接后 from dual;

--SUBSTR(string,start,length)截取字符串。【闭区间】
-- 第一个参数为要截取的内容,Oracle中第一个字符序列是(0 或者 1),第二个参数是截取开始的位置,第三个参数是截取字符串的长度
--如果第二个参数为负数的话,那么0和1就不一样了,因为-0也相当于0,-1的话就是从最后一个来时数,然后往后面数第三个参数的长度
select ename,substr(ename,-0,3) from emp;
select ename,substr(ename,0,3) from emp;
select ename,substr(ename,-1,3) from emp;
select ename,substr(ename,1,3) from emp;
select ename,substr(ename,-3,3) from emp;
select ename,substr(ename,3,3) from emp;
-- 若只有两个参数,第一个参数为截取的字段,第二个参数为开始的位置,一直截取到末尾,也可以是负数,表示从后面开始往后数截取这个参数长度的字符
select ename,substr(ename,-5) from emp;

----------------------------------------------------------------------------------------------------------------
--2.数值函数
--ROUND()对数字进行四舍五入
--四舍五入,只有一个数字的参数,表示保留到个位
select round(1024.633),round(-1024.633) from dual;
--可以传两个参数,正数表示从小数点向右N位进行四舍五入,如果是负数,表示从小数点向左N位进行四舍五入
select round(1024.633,-1),round(1024.633,2) from dual;

--TRUNC()对数字进行截取(与ROUND作用差不多,唯一区别是不进行四舍五入操作)
select trunc(1024.633),trunc(-1024.633) from dual;
select trunc(1024.663,-1),trunc(1024.663,1) from dual;

--MOD(number1,number2)求模运算
--运算符只支持 +-*/ ,取模要用函数mod()
select mod(6,4) from dual;

----------------------------------------------------------------------------------------------------------------
--3.日期函数
--获得当前时间用sysdate
select sysdate from dual;

--日期加减
--当前日期之后
select sysdate + 3,sysdate + 300 from dual;
--当前日期之前
select sysdate - 3,sysdate - 300 from dual;
--总结:日期-数字=日期 日期+数字=日期 日期-日期=数字(天数)

--查询所有员工入职的天数
select ename,sysdate - hiredate days from emp;
--查询所有员工入职的星期数
select ename,(sysdate - hiredate)/7 weeks from emp;

--LAST_DAY()计算指定日期所在月的最后一天
select last_day(sysdate) from dual;

--NEXT_DAY()求下一个指定星期X的日期
--计算下一个星期三是几号
select next_day(sysdate,'星期三') from dual;

--ADD_MONTHS()在指定日期上加上相应的月数 --> 两个参数,第一个是指定日期,第二个是月数
select add_months(sysdate,4) from dual;

--MONTHS_BETWEEN()求出指定日期范围的月数
--查询所有员工的入职月数 MONTHS_BETWEEN(date1,date2)计算规则是:date1-date2
select ename,trunc(months_between(sysdate,hiredate)) 月数 from emp;

--------------------------------------------------------------------------------------------------
--4.转换函数
--TO_CHAR() 日期或数字转换成字符串
select to_char(sysdate,'yyyy-mm-dd') from dual;
--yyyy - 年 mm - 月 dd - 天
select to_char(sysdate,'yyyy-mm-dd'),to_char(sysdate,'yyyy'),to_char(sysdate,'mm'),to_char(sysdate,'dd') from dual;
--去掉0 'fmyyyy-mm-dd'
select to_char(sysdate,'fmyyyy-mm-dd') from dual;
--hh24 - 24小时制(hh12 - 12小时制) mi - 分 ss - 秒
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;
select to_char(sysdate,'yyyy-mm-dd hh12:mi:ss') from dual;
--后面是格式显示,9表示普通数字 $表示美元符号 L表示本地local钱的符号 后面两个只能和9一起用
--从后面开始排列,就是先排4个8,再拍3个...直到排完 也是从后面开始显示的
SELECT TO_CHAR(88888888888,'999,999,999,999,9999') FROM dual;
SELECT TO_CHAR(88888888888,'L999,999,999,999,999') FROM dual;

--TO_NUMBER() 将数字形式的字符串转换成数值
--两个值相加
select 123 + '456' from dual;
select to_number('123') + 456 from dual;

--TO_DATE() 将字符串转换成日期
select to_date('1993-12-09','yyyy-mm-dd') from dual;
select to_char(to_date('1993-12-09','yyyy-mm-dd'),'yyyy-mm-dd') from dual;

-------------------------------------------------------------------------------------------------
--4.通用函数
--NVL函数
--查询出所有员工的年薪
select ename,job,hiredate,(sal+comm)*12 income from emp;
--错误原因:因为奖金为null的值参与了运算,得到是一个不可预计的结果。解决上面空值错误可以使用oracle提供的NVL函数
--NVL(value1,value2):表示的意思就是如果valu1为值null,则计算时用value2替换参与运算
select ename,job,hiredate,(sal+nvl(comm,0))*12 income from emp;

--DECODE函数 CASE 多条件多数值判断
--DECODE(表达式,匹配条件1,value1,匹配条件2,value2…….default)
--查询全部雇员的职位:要求显示CLERK: 业务员 SALESMAN:销售人员 MANAGER:经理 ANALYST:分析员 PRESIDENT:总裁
select ename,decode(job,'CLERK','业务员','SALESMAN','销售人员','MANAGER','经理','ANALYST','分析员','PRESIDENT','总裁') 职位 from emp;

Oracle初级函数的使用的更多相关文章

  1. 数据库之Oracle——初级

    世上岂无千里马,人中难得九方皋: 酒船鱼网归来是,花落故溪深一篙. 关于数据库的第一篇博客,这是我的第二次,人生第二春,什么也不想说,静静的开始吧,至于为什么写唐诗,请看第一篇文章! Oracle 初 ...

  2. oracle add_months函数

    oracle add_months函数 add_months 函数主要是对日期函数进行操作,举例子进行说明 add_months 有两个参数,第一个参数是日期,第二个参数是对日期进行加减的数字(以月为 ...

  3. Oracle to_date()函数的用法

    Oracle to_date()函数的用法 to_date()是Oracle数据库函数的代表函数之一,下文对Oracle to_date()函数的几种用法作了详细的介绍说明,供您参考学习. 在Orac ...

  4. Oracle over函数

    Oracle over函数   SQL code: sql over的作用及用法RANK ( ) OVER ( [query_partition_clause] order_by_clause )DE ...

  5. Oracle常用函数

    前一段时间学习Oracle 时做的学习笔记,整理了一下,下面是分享的Oracle常用函数的部分笔记,以后还会分享其他部分的笔记,请大家批评指正. 1.Oracle 数据库中的to_date()函数的使 ...

  6. Oracle SQL函数

    Oracle将函数大致分为单行函数,聚合函数和分析函数. 单行函数分为字符函数,日期函数,转换函数,数字函数,通用函数,decode函数 一.字符函数 1)大小写控制函数 01.Lower() 全部小 ...

  7. Oracle trunc()函数的用法

    Oracle trunc()函数的用法 /**************日期********************/1.select trunc(sysdate) from dual --2013-0 ...

  8. oracle中函数和存储过程的区别和联系【转载竹沥半夏】

    oracle中函数和存储过程的区别和联系[转载竹沥半夏] 在oracle中,函数和存储过程是经常使用到的,他们的语法中有很多相似的地方,但也有自己的特点.刚学完函数和存储过程,下面来和大家分享一下自己 ...

  9. 转,Oracle中关于处理小数点位数的几个函数,取小数位数,Oracle查询函数

    关于处理小数点位数的几个oracle函数() 1. 取四舍五入的几位小数 select round(1.2345, 3) from dual; 结果:1.235 2. 保留两位小数,只舍 select ...

随机推荐

  1. Python写各大聊天系统的屏蔽脏话功能原理

    Python写各大聊天系统的屏蔽脏话功能原理 突然想到一个视频里面弹幕被和谐的一满屏的*号觉得很有趣,然后就想用python来试试写写看,结果还真玩出了点效果,思路是首先你得有一个脏话存放的仓库好到时 ...

  2. windows下redis安装

    最近因公司项目原因,去了趟昆明出差,其中第一次接触安装redis,配置sentinel,学习到不少,但也都是皮毛而已,本随笔记下所学知识. 1.首先介绍下redis,来源自百度百科 redis是一个k ...

  3. 1-ser2008系统封装实验报告

    系统封装实验 1.       封装系统的原因 直接克隆系统会导致克隆后的系统和原系统的SID号一致,在许多实验中会因为SID号相同而影响实验效果(如活动目录) 2.       实验 首先看一下se ...

  4. C/S打包 客户端/windows程序 Inno Setup

    之前介绍过InstallShield打包工具,本文再介绍更加方便的打包工具Inno Setup Inno Setup相对来说,比InstallShield更容易使用,不需要去等VS去创建项目,只要提供 ...

  5. Apache服务停止:信号灯超时时间已到,指定的网络名不再可用

    环境说明:Apache2.4.10,Windows Server 2008 R2 问题说明: apache服务用于下载文件,但是在运行一段时间后,突然挂了. 其错误提示如下所示: [error] (7 ...

  6. 【原】移动web页面给用户发送邮件的方法 (邮件含文本、图片、链接)

    微信商户通有这么一个需求,用户打开H5页面后,引导用户到电脑下载设计资源包,由于各种内部原因,被告知无后台资源支持,自己折腾了一段时间找了下面2个办法,简单做下笔记. 使用mailto功能,让用户自己 ...

  7. 2016年Web前端面试题目

    以下是收集一些面试中经常会遇到的经典面试题以及自己面试过程中无法解决的问题,通过对知识的整理以及经验的总结,重新巩固自身的前端基础知识,如有错误或更好的答案,欢迎指正.:) HTML/CSS部分 1. ...

  8. 关于JSONP

    一.JSONP的诞生 1.首先,因为AJAX无法跨域,其次开发者发现,<script>标签的src属性是可以跨域的. 2.把跨域服务器写成调用本地的函数,回调数据回来不就好了. 3.JSO ...

  9. [LeetCode] Clone Graph 无向图的复制

    Clone an undirected graph. Each node in the graph contains a label and a list of its neighbors. OJ's ...

  10. R - MQ

    1. rabbit MQ 安装 Rabbit MQ 是建立在强大的Erlang OTP平台上,因此安装Rabbit MQ的前提是安装Erlang.通过下面两个连接下载安装3.2.3 版本: 下载并安装 ...