Oracle函数-单行函数-转换函数、条件表达式

单行函数

============================================================

特点:

每行返回一个结果,输入输出存在一一对应的关系

能嵌套使用 ,一个函数的输出能做另外一个函数的输入 如:select lowner(upper(‘aa‘)) from dual;

传入的变量可以是列的值,也可以是表达式。 如 select lower(ename) from emp;

============================================================

转换函数:

to_number: 将字符类型的数据转换为数字类型

to_date:将字符类型的数据转换为日期类型d

to_char:将number或者是date类型的数据转换为字符类型

============================================================

1.1、to_char:将时间类型的数据转换为字符类型

语法:to_char(date,‘format_model‘)

format_model:日期格式类型

yyyy    数字年份形式 四位数

year     年份的拼写形式

mm      数字日期形式

month 月份的全拼格式

mon     月份的简写  三位数

dy        星期的简写   三位数

day      星期的全写

dd        数字形式日期 两位数

例如:

①查询当前时间,时间格式显示为2011-01-02 12:10:13

SQL>select sysdate from dual;   ----显示默认的时间格式

SQL>select to_char(sysdate,‘yyyy-mm-dd hh24:mi:ss‘) from dual;

②查询当前时间,时间格式显示为 “星期全写 四位年 月份全写"

SQL>select to_char(sysdate,‘day yyyy month‘) from dual;

③fm的使用 去掉前导0

SQL> select to_char(sysdate-13,‘dd‘) from dual;

TO

--

07

SQL> select to_char(sysdate-13,‘fmdd‘) from dual;

TO

--

7

④日期格式里面插入字符,需要用双引号把字符引起来,如”  星期全写 victor 四位年 月份全写"

SQL>select to_char(sysdate,‘day "victor" yyyy month‘) from dual;

============================================================

1.2、to_char:将数字类型的数据转换为字符类型

语法:to_char(number,‘format_model‘)

format_model:格式类型

9    ----有多少个number(就是多少位) 都真实的显示出来,如果前面是0的,后面是number的,前面的0不显示

0    ----有多少位就显示多少位,不足的用0填充

$    ----用美元显示

L    ----使用本地货币符号

.

,

①测试9和0的区别:想要把工资显示为x,xxx.xx这种格式

SQL>select ename,to_char(sal,‘9,999.99‘) from emp;

改成

SQL>select ename,to_char(sal,‘9,009.09‘) from emp;

发现没有区别,因为9和0都是表示一位数字

---------------------------------------------------------------------------------------

改成

SQL>select ename,to_char(sal,‘0,999.99‘) from emp;

现在需要显示4位数,800要显示为0800,由于前面是0,那就是说不够的用0填充

---------------------------------------------------------------------------------------

改成

SQL>select ename,to_char(sal,‘09909090,999.99‘) from emp;

总结:9和0都是表示一个数字,0表示不足位的时候用0去填充,一般只用在前导位。

============================================================

2、to_number:用于将字符类型转换为数字类型

SQL>select to_number(‘234234.4350‘,‘999999.0000‘) from dual;

TO_NUMBER(‘RMB234234.4350‘,‘L999999.0000‘)

——————————————

234234.435

①用于将16进制转化为10进制

SQL>select to_number(‘fa‘,‘xxxxx‘) from dual;

============================================================

3、to_date:用于将数据转换为日期类型

语法:to_date(‘char‘,‘format_model‘)

format_model:格式类型

yyyy    数字年份形式 四位数

year    年份的拼写形式

mm     数字日期形式

month 月份的全拼格式

mon     月份的简写   三位数

dy        星期的简写   三位数

day      星期的全写

dd       数字形式日期 两位数

①select * from emp where hiredate < to_date(‘1986-07-25‘,‘yyyy-mm-dd‘);

============================================================

4、空值函数

①NVL(expr1,expr2):对expr1进行判断,如果expr1为空,则返回expr2,如果expr1不为空,则返回expr1本身

SQL>select ename,comm,nvl(comm,0) from emp;

注意:数据类型需要匹配,如expr1为number,那么expr2也要为number,否则会报错

②NVL2(exp1,expr2,expr3):对expr1进行判断,如果expr1为空,则返回expr3,如果expr1不为空,则返回expr2;

SQL>select ename,comm,nvl2(comm,1,0) from emp;

③NULLIF(expr1,expr2):如果expr1和expr2相等,则返回null,否则返回expr1

SQL> select sal,nullif(sal,3000) from emp;

============================================================

5、条件表达式

①case的语法:

case expr  when expr1 when return_expr1

when expr2 when return_expr2

when expr3 when return_expr3

else else_expr

end;

eg:对deptno进行判断,如果10号部门,返回一倍工资(1*sal),如果是20号部门,返回两倍工资(2*sal),如果是30,返回3倍工资,如果都不是,则返回一半工资

select ename,deptno,sal,

case deptno

when 10 then 1*sal

when 20 then 2*sal

when 30 then 3*sal

else sal/2

end

from emp;

②decode:decode(expr1,expr2,expr3,.........)

eg:对deptno进行判断,如果是10号部门,返回一倍工资(1*sal),如果不是,则返回0。

SQL>select ename,deptno,sal,decode(deptno,10,sal,0) from emp;

eg:对deptno进行判断,如果是10号部门,返回一倍工资(1*sal);如果是30号部门,返回30倍工资(30*sal);如果是41号部门,返回50。

SQL>select ename,deptno,sal,decode(deptno,10,sal,30,30*sal,41,50) from emp;

使用decode 改写case中的列子

SQL>select ename,deptno,sal,decode(deptno,10,sal,20,2*sal,30,3*sal,sal/2) from emp;

时间: 2024-11-03 21:25:04

Oracle函数-单行函数-转换函数、条件表达式的相关文章

ORACLE常用数值函数、转换函数、字符串函数

本文并不准备介绍全部的oracle函数,当前情势下,俺也还没这个时间,需要学习的东西太多了,要把多数时间花在学习经常能用上的技术方面:),所以如果是准备深入了解所有oracle函数的朋友,还是去关注:Oracle SQL Reference官方文档更靠谱一些. 本文更多将会介绍三思在日常中经常会用到的,或者虽然很少用到,但是感觉挺有意思的一些函数.分二类介绍,分别是: 著名函数篇 -经常用到的函数 非著名函数篇-即虽然很少用到,但某些情况下却很实用 注:N表示数字型,C表示字符型,D表示日期型,

【C/C++学院】0822-类型转换函数与构造转换函数/类的继承/类的继承以及区别/继承静态成员与静态函数//继承实现代码重用/单继承QT案例/多继承简介以及实战/Gpu编程

类型转换函数与构造转换函数 #include<iostream> class fushu { public: explicit fushu(int num)//避免隐式转换,引发歧义 { x = num; y = num; } void print() { std::cout << x << "+" << y << "i" << std::endl; } operator int(); //不支

Mysql日期转换函数、时间转换函数

Mysql日期转换函数.时间转换函数 一.MySQL 获得当前日期时间 函数 1,获得当前日期+时间(date + time)函数:now(): select now(); 结果:2008-08-08 22:20:46 2,获得当前日期+时间(date + time)函数:sysdate()sysdate() 日期时间函数跟 now() 类似,不同之处在于:now() 在执行开始时值就得到了, sysdate() 在函数执行时动态得到值: select sysdate(); 结果:2008-08

Oracle函数大全之转换函数

chartorowid(c1) [功能]转换varchar2类型为rowid值 [参数]c1,字符串,长度为18的字符串,字符串必须符合rowid格式 [返回]返回rowid值 [示例] SELECT chartorowid('AAAADeAABAAAAZSAAA') FROM DUAL; [说明] 在Oracle中,每一条记录都有一个rowid,rowid在整个数据库中是唯一的,rowid确定了每条记录是在Oracle中的哪一个数据文件.块.行上. 在重复的记录中,可能所有列的内容都相同,但r

SQL单行函数和多行函数

单行函数和多行函数示意图: 单行函数分为五种类型:字符函数.数值函数.日期函数.转换函数.通用函数 单行函数: [sql] view plaincopy --大小写控制函数 select lower('Hello World') 转小写, upper('Hello World') 转大写 from dual; --initcap: 首字母大写 select initcap('hello world') 首字符大写 from dual; --字符控制函数 -- concat: 字符连接函数, 等同

重构摘要9_简化条件表达式

<重构-改善既有代码的设计>Martin Fowler 摘要: 第九章 简化条件表达式 Decompose Conditinal 分解条件表达式 你有一个复杂的条件(if-then-else)语句 从三个段落中分别提炼出独立函数 Consolidate Conditional Expression 合并条件表达式 你有一系列条件测试,都得到相同结果 将这些测试合并成为一个条件表达式,并将这个条件表达式提炼成为一个独立函数 检查用意更清晰,有时也不用这么做 Consolidate Duplica

简化条件表达式

1.分解条件表达式:a.将判断条件独立函数:b.将分支段落独立函数: 2.合并条件表达式:a.使用逻辑或/与:b.三元表达式 3.合并重复的代码片段 4.移除控制标记:a.找出对标记变量赋值的语句,代之break或continue:b.extract method,以return返回控制标记 5.以卫语句取代嵌套条件表达式: 精髓:给某一条分支以特别的重视 比较:if-then-else则是同等重要 方式:将条件反转,最后考虑去除零时变量 6.以多态取代条件表达式: a.extract meth

重构手法之简化条件表达式【1】

返回总目录 本小节目录 Decompose Conditional(分解条件表达式) Consolidate Conditional Expression(合并条件表达式) 1Decompose Conditional(分解条件表达式) 概要 你有一个复杂的条件(if-else if-else)语句. 从if.else if.else三个段落中分别提炼出独立函数. 动机 复杂的条件逻辑往往会导致程序复杂度上升.编写代码来检查不同的条件分支.根据不同的分支做不同的事往往又会导致函数过长. 将条件表

oracle之3单行函数之条件表达式

单行函数之条件表达式 Case表达式: 例如: 也可以在条件判断的when中写表达式 Decode函数: 例如: 原文地址:https://www.cnblogs.com/txf0324/p/11038070.html