Oracle数值函数,日期函数,转换函数,通用函数(七)
--数值函数 ROUND(n,[m])四舍五入,TRUNC(n,[m])截断函数,MOD()取余函数 函数用法,
select ROUND(25.328) from dual;
select ROUND(25.328,2) from dual;
select ROUND(25.328,-1) from dual;select TRUNC(25.328) from dual;
select TRUNC(25.328,2) from dual;
select TRUNC(25.328,-1) from dual;select ROUND(sal/30,2),TRUNC(sal/30,2) from emp;--求员工的日工资select MOD(9,2) from dual;
select MOD(4,2) from dual;
select * from emp where MOD(empno,2)=0;--求员工号为偶数的员工信息--日期函数SYSDATE当前日期,MONTHS_BETWEEN返回两个日期之间相差的月数,ADD_MONTHS,NEXT_DAY,LAST_DAY,ROUND(7月1日),TRUNC
select SYSDATE from dual;
select to_char(sysdate,'yyyy-MM-dd') from dual;
select months_between(sysdate,hiredate) from emp;
select round(months_between(sysdate,hiredate)/12) from emp;
select ename,add_months(hiredate,30*12) from emp;--员工入职三十年后的日期
select sysdate,next_day(sysdate,'星期二') from dual;--当前时间对应的下一个星期二的日期
select sysdate,last_day(sysdate) from dual;--当前时间对应的本月最后一天的日期
select empno,ename,hiredate from emp where hiredate = last_day(hiredate);
select *from emp where hiredate = last_day(hiredate);
select round(sysdate,'YEAR') from dual;
select trunc(sysdate,'YEAR') from dual;
SQL> select hiredate,round(hiredate,'YEAR'),round(hiredate,'MONTH') from emp where empno=7654;HIREDATE ROUND(HIREDATE,'YEAR') ROUND(HIREDATE,'MONTH')
----------- ---------------------- -----------------------
1981-9-28 1982-1-1 1981-10-1SQL> select hiredate,trunc(hiredate,'YEAR'),trunc(hiredate,'MONTH') from emp where empno=7654;HIREDATE TRUNC(HIREDATE,'YEAR') TRUNC(HIREDATE,'MONTH')
----------- ---------------------- -----------------------
1981-9-28 1981-1-1 1981-9-1--转换函数TO_DATE,TO_CHAR,TO_NUMBER,oracle中也有部分隐式转换类型,这些函数是显示转换
select * from emp where sal>2000;
select * from emp where sal>'2000';--结果相同
SQL> select to_char(hiredate,'YYYY"年"MM"月"DD"日"') from emp;TO_CHAR(HIREDATE,'YYYY"年"MM"?
-----------------------------
1980年12月17日
1981年02月20日
1981年02月22日
1981年04月02日
1981年09月28日
1981年05月01日
1981年06月09日
1987年04月19日
1981年11月17日
1981年09月08日
1987年05月23日
1981年12月03日
1981年12月03日
1982年01月23日
14 rows selected
SQL> select to_char(hiredate,'DD-MON-RR','NLS_DATE_LANGUAGE=AMERICAN') from emp;TO_CHAR(HIREDATE,'DD-MON-RR','
------------------------------
17-DEC-80
20-FEB-81
22-FEB-81
02-APR-81
28-SEP-81
01-MAY-81
09-JUN-81
19-APR-87
17-NOV-81
08-SEP-81
23-MAY-87
03-DEC-81
03-DEC-81
23-JAN-82
14 rows selected
select TO_CHAR(123456,'L0,000,000.00') from dual;--本地货币字符前缀,0补齐
select TO_CHAR(123456,'L9,999,999.99') from dual;--不补齐
select TO_CHAR(123456,'$9,999,999.99') from dual;--美元符号前缀
select TO_DATE(20181113,'YYYY_MM_DD') from dual;
select TO_DATE('20181113','YYYY_MM_DD') from dual;
select TO_NUMBER('$2000','$9999') from dual;
select TO_NUMBER('¥2000','L9999') from dual;
--通用函数NVL(expr1,expr2),NVL2(expr1,expr2,expr3),NULLIF(expr1,expr2),COALESCE(expr1,expr2[]),CASE,DECODE(......)
--case expr1 when X then y when x1 then y1 else y2 end
SQL> select ename,sal+NVL(comm,0) from emp;ENAME SAL+NVL(COMM,0)
---------- ---------------
SMITH 800
ALLEN 1900
WARD 1750
JONES 2975
MARTIN 2650
BLAKE 2850
CLARK 2450
SCOTT 3000
KING 5000
TURNER 1500
ADAMS 1100
JAMES 950
FORD 3000
MILLER 1300
14 rows selected
SQL> select ename,NVL2(comm,sal+comm,sal) from emp;ENAME NVL2(COMM,SAL+COMM,SAL)
---------- -----------------------
SMITH 800
ALLEN 1900
WARD 1750
JONES 2975
MARTIN 2650
BLAKE 2850
CLARK 2450
SCOTT 3000
KING 5000
TURNER 1500
ADAMS 1100
JAMES 950
FORD 3000
MILLER 1300
14 rows selected
SQL> select ename,hiredate,NULLIF(hiredate,trunc(hiredate,'MONTH')) from emp;ENAME HIREDATE NULLIF(HIREDATE,TRUNC(HIREDATE
---------- ----------- ------------------------------
SMITH 1980-12-17 1980-12-17
ALLEN 1981-2-20 1981-2-20
WARD 1981-2-22 1981-2-22
JONES 1981-4-2 1981-4-2
MARTIN 1981-9-28 1981-9-28
BLAKE 1981-5-1
CLARK 1981-6-9 1981-6-9
SCOTT 1987-4-19 1987-4-19
KING 1981-11-17 1981-11-17
TURNER 1981-9-8 1981-9-8
ADAMS 1987-5-23 1987-5-23
JAMES 1981-12-3 1981-12-3
FORD 1981-12-3 1981-12-3
MILLER 1982-1-23 1982-1-23
14 rows selected
SQL> select ename,hiredate,sal,COALESCE(sal+comm,sal) from emp;ENAME HIREDATE SAL COALESCE(SAL+COMM,SAL)
---------- ----------- --------- ----------------------
SMITH 1980-12-17 800.00 800
ALLEN 1981-2-20 1600.00 1900
WARD 1981-2-22 1250.00 1750
JONES 1981-4-2 2975.00 2975
MARTIN 1981-9-28 1250.00 2650
BLAKE 1981-5-1 2850.00 2850
CLARK 1981-6-9 2450.00 2450
SCOTT 1987-4-19 3000.00 3000
KING 1981-11-17 5000.00 5000
TURNER 1981-9-8 1500.00 1500
ADAMS 1987-5-23 1100.00 1100
JAMES 1981-12-3 950.00 950
FORD 1981-12-3 3000.00 3000
MILLER 1982-1-23 1300.00 1300
14 rows selected
NULLIF函数NULLIF(Expression1,Expression2):给定两个参数Expression1和Expression2,如果两个参数相等,则返回NULL;否则就返回第一个参数。等价于:Case WHEN Expression1=Expression2 Then NULL ELSE Expression1。例如Select NULLIF(1,1)返回NULL,Select NULLIF(1,2)返回1。有一个实际的应用,例如防止除0操作的放生,可以使用a/NULLIF(b,0),这样就不怕b是0了,当然除0操作也可以通过别的方式判断。NULLNULL是个神奇的东西,表示空值,未知值,任何数与它加减乘除都返回NULL。ISNULL函数ISNULL(Expression1,Expression2):给定两个参数Expression1和Expression2,如果Expression1是NULL,那么返回Expression2,否则返回Expression1。等价于:Case WHEN Expression1 is NULL Then Expression2 ELSE Expression1。例如Select ISNULL(NULL,1)返回1,Select ISNULL(1,2)返回1。有一个实际的应用,可以对空值进行默认值替代,例如SELECT ISNULL(email,'没有填写email') from table1,所有email为null的,用'没有填写email'来替代。COALESCE函数COALESCE(Expression1,Expression2,Expression3,......):接受一系列的表达式或列,返回第一个非空的值。例如SELECT COALESCE(NULL,NULL,4,NULL,NULL,5),那么返回,如果里面的参数都为NULL,那么会报错。select iif(30>45,'对','错') as 结果
/*
结果
----
错
*/
select iif(null=null,'对','错') as 结果
/*
结果
----
错
*/
select iif(null is null,'对','错') as 结果
/*
结果
----
对
*/
WITH TIES
与top()和order by 一起用,可以返回多于top的行。防止丢失想要的信息。
例如:有个表table1
select top(3) * from table1 order by name desc:结果如下:(只有三条)
select top(3) with ties * from table1 order by name desc:结果如下:
小插件,SQL Prompt,配合Microsoft SQL Server Management Studio,使用起来非常方便,同时再加上以下几个快捷键:
(1)ctrl+5或F5,运行代码,如果想运行特定的语句,那么只是选中该语句,然后F5或ctrl+E即可。
(2)ctrl+L:显示执行计划。
(3)ctrl+R:显示隐藏下面的结果窗口,增大自己书写sql的空间。
Oracle数值函数,日期函数,转换函数,通用函数(七)相关推荐
- mysql中的dateDayOfYear_Mysql 常用的时间日期及转换函数小结
本文主要是总结一些常用的在实际运用中常用的一些mysql时间日期以及转换的函数 1.now() :返回当前日期和时间 select now(); //2018-04-21 09:19:21 2.cu ...
- oracle取日期6,Oracle通过日期获取星座函数
Oracle通过日期获取星座函数 create or replace function get_xingzuo(dt in date) RETURN V ARCHAR2 is xingzuo VARC ...
- sql日期格式转换函数_SQL转换日期
sql日期格式转换函数 介绍 (Introduction) A common task for newbies is to learn how to do a SQL convert date and ...
- oracle 英文日期格式转换中文日期格式
oracle 英文日期格式转换中文日期格式 02-Mar-2010 这个格式是美国格式,可以使用如下语句转换成中文格式 2010/3/2: SELECT TO_DATE('02 Mar 2010 06 ...
- oracle 聚合函数 日期,Oracle日期函数/字符函数/数字函数/转换函数/聚合函数
Oracle日期函数: MONTHS_BETWEEN:返回两个日期之间月份的差值 MONTHS_BETWEEN('01-EP-95','11-JAN-94') ===>19.6774194 AD ...
- oracle的日期时间转换日期,oracle 的时间日期转换函数
http://hi.baidu.com/cuigq_hr/blog/item/ba2bc167ed79022eaa184c34.html 1.有sysdate转换后的日期的例子总结: select t ...
- Oracle OCP(05):转换函数
一.日期格式说明 类型 说明 Cc 两位数字的世纪 scc 有负号的两位数字的世纪,表示世纪前 Q 表示一位数季度 yyyy 表示4位数年 iyyy 表示4位数年,ISO格式 rrrr 表示当前年的4 ...
- MSSQL日期格式转换函数(使用CONVERT)
使用 CONVERT: CONVERT ( data_type [ ( length ) ] , expression [ , style ] ) convert(varchar(10),字段名,转换 ...
- 表达式和内部函数(运算符/连接符/数字函数/字符串函数/日期函数/转换函数/format函数)
运算符 运算符 名称 优先级 例子fa ^ 幂运算 1 a^b - 取负 2 -a * , / 乘除 3 a*b,a/b \ 整除 4 a\b Mod 取余运算 5 a Mod b +, - 加减 6 ...
- oracle中用于返回日期和时间,oracle中日期和时间函数的使用
日期和时间函数的使用 1, SYSDATE:此函数用于返回系统当前日期 2, ADD_MONTHS(日期,n):返回指定日期之前或之后的n个月所对应的日期(n为 ...
最新文章
- PyTorch 自动微分示例
- Linux文件查找工具的探索
- 32位程序调用64位dll_电脑系统怎样区分32位和64位
- 20155317 2016-2017-2 《Java程序设计》第十学习总结
- 软件系统设计 表驱动法
- 【小松教你手游开发】【unity实用技能】给每个GameObject的打开关闭加上一个渐变...
- Python--Json数据简单解析(11.18)
- Maven依赖junit @Test报错解决
- 天梯—输出GPLT(C语言)
- SVN客户端下载和Svn visual studio插件
- 【论文分享】ACL 2020 图神经网络在自然语言处理中的应用
- 超分20220218讨论
- 【Python实现】运输问题的表上作业法(一):利用伏格尔 (Vogel) 法寻找初始基可行解
- Sequencher_v4.1.4 DNA 序列分析的工业标准软件
- 2022年认证杯SPSSPRO杯数学建模A题(第二阶段)人员的紧急疏散求解全过程文档及程序
- 测绘专业计算机知识,测绘科学技术的发展趋势
- Samba服务和FTP服务
- 经纬度在线查询,地名(批量)查询经纬度,经纬度(批量)查询地名
- 小程序真机调试出现:request:fail 未能连接到服务器。解决办法
- 音乐播放(Toggle PlayerPrefs)