Oracle入门基础(三)一一单行函数
SQL> --字符函数
SQL> select lower('Hello World') 转小写,upper('Hello World') 转大写,initcap('hello world') 首字母大写  from dual;
转小写      转大写      首字母大写
hello world HELLO WORLD Hello World         
SQL> --substr(a,b) 从a中,第b位开始取
SQL> select substr('Hello World',4) 子串 from dual;
子串
lo World                                                                        
SQL> --substr(a,b,c) 从a中,第b位开始取,取c位
SQL> select substr('Hello World',4,3) 子串 from dual;
子串
lo                                                                              
SQL> --length 字符数 lengthb 字节数
SQL> select length('北京') 字符,lengthb('北京') 字节 from dual
      字符       字节
        2           4                                                                                               
SQL> --instr(a,b)
SQL> --在a中,查找b
SQL> select instr('Hello World','ll') 位置 from dual;
      位置
         3                                                                      
SQL> --lpad 左填充  rpad 右填充
SQL> -- abcd  ---> 10位
SQL> select lpad('abcd',10,'*') 左,rpad('abcd',10,'*') 右 from dual;
左         右
******abcd abcd******                                                           
SQL> --trim 去掉前后指定的字符
SQL> select trim('H' from 'Hello WorldH')  from dual;
TRIM('H'FR
ello World                                                                      
SQL> --replace
SQL> select replace('Hello World','l','*') from dual;
REPLACE('HE
He**o Wor*d                                                                     
SQL> --四舍五入
SQL> select round(45.926,2) 一,round(45.926,1) 二,round(45.926,0) 三,round(45.926,-1) 四,round(45.926,-2) 五 from dual;
        一         二         三         四         五
     45.93       45.9         46         50          0                          
SQL> --截断
SQL> select trunc(45.926,2) 一,trunc(45.926,1) 二,trunc(45.926,0) 三,trunc(45.926,-1) 四,trunc(45.926,-2) 五 2* from dual
        一         二         三         四         五
     45.92       45.9         45         40          0                          
SQL> --当前时间
SQL> select sysdate from dual;
SYSDATE
29-9月 -16                                                                      
SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;
TO_CHAR(SYSDATE,'YY
2016-09-29 11:58:32                                                             
SQL> --昨天 今天  明天
SQL> select (sysdate-1) 昨天,sysdate 今天,(sysdate+1) 明天 from dual;
昨天           今天           明天
28-9月 -16     29-9月 -16     30-9月 -16                                        
SQL> --计算员工的工龄:天 星期  月 年
SQL> select ename,hiredate,(sysdate-hiredate) 天,(sysdate-hiredate)/7 星期,
  2                        (sysdate-hiredate)/30 月,(sysdate-hiredate)/365 年  from emp;
ENAME      HIREDATE               天       星期         月         年
SMITH      17-12月-80     13070.5013 1867.21448 435.683378 35.8095927           
SQL> select sysdate+hiredate from emp;
ORA-00975: 不允许日期 + 日期 
SQL> --months_between
SQL> select ename,hiredate,(sysdate-hiredate)/30 一,months_between(sysdate,hiredate) 二 from emp;
ENAME      HIREDATE               一         二
SMITH      17-12月-80     435.683431  429.40332                                 
SQL> --53个月后
SQL> select add_months(sysdate,53) from dual;
28-2月 -21                                                                      
SQL> --last_day
SQL> select last_day(sysdate) from dual;
LAST_DAY(SYSDA
30-9月 -16                                                                      
SQL> --next_day
SQL> --下一个星期四
SQL> select next_day(sysdate,'星期四') from dual;
NEXT_DAY(SYSDA
06-10月-16                                                                      
SQL> --下一个星期五
SQL> select next_day(sysdate,'星期五') from dual;
NEXT_DAY(SYSDA
30-9月 -16                                                                      
SQL> select next_day(sysdate,'礼拜五') from dual;
ORA-01846: 周中的日无效 
SQL> next_day函数的应用:每个星期一自动备份表中的数据
SQL> 1、分布式数据库
SQL> 2、触发器 快照
SQL> select round(sysdate,'month'),round(sysdate,'year') from dual;
ROUND(SYSDATE, ROUND(SYSDATE,
01-10月-16     01-1月 -17                                                       
SQL> --2016-09-29 12:18:12今天是星期四
SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss今天是day') from dual;
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss今天是day') from dual
ORA-01821: 日期格式无法识别 
SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss"今天是"day') from dual;
TO_CHAR(SYSDATE,'YYYY-MM-DDHH24:MI
2016-09-29 12:20:13今天是星期四                                                 
SQL> --查询员工的薪水:两位小数、千位符、本地货币代码
SQL> select to_char(sal,'L9,999.99') from emp;
TO_CHAR(SAL,'L9,999
           ¥800.00                                                                                                                  
SQL> --nvl2(a,b,c) 当a=null的时候,返回c;否则返回b
SQL> selec sal*12+nvl2(comm,comm,0) from emp;
SP2-0734: 未知的命令开头 "selec sal*..." - 忽略了剩余的行。
SQL> select sal*12+nvl2(comm,comm,0) from emp;
SAL*12+NVL2(COMM,COMM,0)
 15600                                                        
SQL> --nullif(a,b) 当a=b的时候,返回null;否则返回a
SQL> select nullif('abc','abcd') 值 from dual;
值
abc                                                                                
SQL> --coalesce 从左到右 找到第一个不为null的值
SQL> select comm,sal,coalesce(comm,sal) "第一个不为null的值"
  2  from emp;
      COMM     SAL     第一个不为null的值
                      800                800
       300       1600                300                                        
SQL> --给员工涨工资,总裁1000 经理800 其他400
SQL> select ename,job,sal 涨前,
  2         case job when 'PRESIDENT' then sal+1000
  3                  when 'MANAGER' then sal+800
  4                  else sal+400
  5          end 涨后
  6  from emp;
ENAME      JOB             涨前       涨后
---------- --------- ---------- ----------
SMITH      CLERK            800       1200
ALLEN      SALESMAN        1600       2000                                                                                                                                                              
SQL> select ename,job,sal 涨前,
  2         decode(job,'PRESIDENT',sal+1000,
  3                    'MANAGER',sal+800,
  4                              sal+400) 涨后
  5  from emp;
ENAME      JOB             涨前       涨后
---------- --------- ---------- ----------
SMITH      CLERK            800       1200
ALLEN      SALESMAN        1600       2000
WARD       SALESMAN        1250       1650
												
											Oracle入门基础(三)一一单行函数的更多相关文章
- Oracle笔记(三)单行函数
		
-函数 函数像一个黑盒子一样(看不到里边的构造),有参数返回值,可以为我们完成一定的功能. -单行 这种函数会对结果中的每一行计算一次,每行返回一个结果,单行概念区别于分组函数. 单行函数主要分为以下 ...
 - day  53-1  Django基础三之视图函数
		
Django基础三之视图函数 本节目录 一 Django的视图函数view 二 CBV和FBV 三 使用Mixin 四 给视图加装饰器 五 Request对象 六 Response对象 一 Dja ...
 - day  67  Django基础三之视图函数
		
Django基础三之视图函数 本节目录 一 Django的视图函数view 二 CBV和FBV 三 使用Mixin 四 给视图加装饰器 五 Request对象 六 Response对象 一 Dja ...
 - PHP基础入门(三)---PHP函数基础
		
PHP基础入门(三)---函数 今天来给大家分享一下PHP的函数基础.有了前两章的了解,想必大家对PHP有了一定的基础了解.想回顾前两章的朋友可以点击"PHP基础入门(一)"&qu ...
 - 学习python第三天单行函数
		
1.去重:distinct关键字 需求:查看公司一共有多少部门? select department_id from employees;此代码会查出107条记录,存在部门重复的问题! select ...
 - Oracle笔记(五) 单行函数
		
虽然各个数据库都是支持SQL语句的,但是每一个数据库也有每一个数据库自己所支持的操作函数,这些就是单行函数,而如果要想进行数据库开发的话,除了要会使用SQL之外 ,就是要多学习函数. 单行函数主要分为 ...
 - Oracle入门基础(七)一一集合运算
		
SQL> /* SQL> 查询10和20号部门的员工 SQL> 1. select * from emp where deptno=10 or deptno=20; SQL> ...
 - Oracle入门基础(四)一一多行函数
		
SQL> --工资总额 SQL> select sum(sal) from emp; SUM(SAL) 29025 SQL> --人数 SQL> select count(*) ...
 - Oracle入门基础(十三)一一java调用oracle存储过程
		
package demo; import java.sql.CallableStatement; import java.sql.Connection; import java.sql.ResultS ...
 
随机推荐
- .Net Core AOP之IExceptionFilter
			
一.简介 在.net core 中Filter分为以下六大类: 1.AuthorizeAttribute(权限验证) 2.IResourceFilter(资源缓存) 3.IActionFilter(执 ...
 - 昨天面试被问到的 缓存淘汰算法FIFO、LRU、LFU及Java实现
			
缓存淘汰算法 在高并发.高性能的质量要求不断提高时,我们首先会想到的就是利用缓存予以应对. 第一次请求时把计算好的结果存放在缓存中,下次遇到同样的请求时,把之前保存在缓存中的数据直接拿来使用. 但是, ...
 - c++动态内存管理与智能指针
			
目录 一.介绍 二.shared_ptr类 make_shared函数 shared_ptr的拷贝和引用 shared_ptr自动销毁所管理的对象- -shared_ptr还会自动释放相关联对象的内存 ...
 - 可视化BI工具选型,应该注意什么
			
伴随着大数据时代的到来,企业对数据的需求从"IT主导的报表模式"转向"业务主导的自助分析模式",可视化BI工具也随之应运而生.面对如此众多的可视化BI工具,我 ...
 - Visual Studio 的快捷不能用时候,我们只要选择重置就可以用了。
			
当发现Visual Studio 的快捷不能用时候,我们只要选择重置就可以用了.
 - WPF中RichTextBox中添加文字的两种方法
			
RichTextBox控件不同于TextBox控件,后者可以直接通过其Text属性绑定或者在后台动态添加文字. (一)使用数据绑定 <RichTextBox FontSize="12& ...
 - jq获取不包含某些属性的元素
			
最近写项目,有个功能实现checkbox全选,但是被禁用的checkbox不能选中 点击全选后发现禁用checkbox的也被选中了,不符合需求. 但是想了半天,属性选择器都是判断某个属性值的,没有判断 ...
 - Java变量,作用域,常量
			
JAVA变量,作用域,常量 变量 变量是什么:就是可以变化的量! Java是一种强类型的语言,每变量都必须声明其类型. Java变量是程序中最基本的存储单元,其要素包括:变量名,变量类型和作用域 格式 ...
 - 进制转换伪代码转python
			
运行结果如图 代码如下 a=input("请输入一个十进制数:", ) print("二进制结果为:",bin(int(a))) print("八进制 ...
 - 【pip install】+【环境变量配置】
			
1.环境变量配置 (1)用打开后下面的"系统变量"进行配置,下面的名字为Path: (2)举例,如果安装ping.exe:而且ping.exe在C:\lianghua\ping.e ...