码迷,mamicode.com
首页 > 数据库 > 详细

Oracle数据库(四)—— 单行函数

时间:2018-08-02 17:45:23      阅读:203      评论:0      收藏:0      [点我收藏+]

标签:符号   tcap   单行函数   截断   ast   last   计算   http   init   

单行函数:对于每一行数据进行计算后得到一行输出结果、

  SQL单行函数根据数据类型分为字符函数、数字函数、日期函数、转换函数,另外还有一些通用函数。例如NVL函数 

  • 操作数据对象
  • 接受参数返回一个结果
  • 只对一行进行变换
  • 每行返回一个结果
  • 可以转换数据类型
  • 可以嵌套
  • 参数可以是一列或一个值

 

1、字符函数

   大小写控制函数:lower,upper,initcap

技术分享图片

 

   字符控制函数:concat,substr,length,instr,lpad | rpad,trim,replace

concat:连接字符串, substr:分隔字符串, length:字符串长度

技术分享图片

 

instr:字符串中首次出现字母的位置

技术分享图片

 

lpad:左端补齐

技术分享图片

 

rpad:右端补齐

技术分享图片

 

trim:在字符串收尾去掉相应的字符,中间的保留

技术分享图片

 

replace:全部替换

技术分享图片

 

 2、数字函数

round:四舍五入

技术分享图片

 

trunc:截断

技术分享图片

 

mod:求余

技术分享图片

 

3、日期函数

  • 在日期上加上或减去一个数字结果认为日期
  • 两个日期相减返回日期之间相差的天数,日期不允许做加法运算,无意义
  • 可以用数字除24来向日期中加上或减去天数

 

在日期上加减数字

技术分享图片

 

日期相减 

技术分享图片

 

MONTHS_BETWEEN:两个日期相差的天数

技术分享图片

 

 ADD_MONTHS:向指定日其中添加若干月数

NEXT_DAY:指定日期的下一个星期*对应的日期

技术分享图片

 

LAST_DAY:本月的最后一天

-- 来公司的员工中,hire_date是每个月倒数第二天来公司的有哪些?

技术分享图片

 

ROUND:日期四舍五入

TRANC:日期截断

技术分享图片

技术分享图片

 

4、转换函数

数据类型转换:隐性转换和显性转换

隐式转换

技术分享图片

 

技术分享图片

 

显性转换

 技术分享图片

 

日期转换为字符串

技术分享图片

字符串转化为日期

技术分享图片

 在转化时要穿插字符的时候,要使用双引号

技术分享图片

 

 数字转字符串(货币符号:$ 美元 , L 当地货币符号)

技术分享图片

 

字符串转数字

技术分享图片

 

 技术分享图片

 

5、通用函数

NVL(exp1,exp2):若exp1不为空,则使用exp1本身,若exp1为空,则使用exp2

 1.可以使用的数据类型有日期、字符、数字

2.函数的一般形式:

  • NVL(commission_pct,0)
  • NVL(hire_date,‘01-JAN-97‘)
  • NVL(job_id,‘No Job Yet‘)

--  求公司员工的年薪(含commission_pct) 奖金率

技术分享图片

 

-- 输出last_name,department_id,当department_id为null时,显示‘没有部门’。

技术分享图片

技术分享图片

 

NVL2(exp1,exp2,exp3):若exp1为空,返回exp2,否则,返回exp3

-- 查询员工的奖金率,若为空,返回0.01, 若不为空,返回实际奖金率+0.015

技术分享图片

技术分享图片

 

 NULLIF(exp1,exp2):exp1等于exp2时返回null,不等时返回exp1

比较员工姓和名的长度,相同返回null,不同返回名的长度

技术分享图片

 

COALESCE(不常用)

  • COALESCE 与 NVL 相比的优点在于 COALESCE 可以同时处理交替的多个值。
  • 如果第一个表达式为空,则返回下一个表达式,对其他的参数进行COALESCE 。

 

6、条件表达式

 在SQL语句中使用IF-THEN-ELSE逻辑

使用两种方法

  • CASE表达式
  • DECODE函数

 

-- 查询部门号为 10, 20, 30 的员工信息, 若部门号为 10, 则打印其工资的 1.1 倍, 20 号部门, 则打印其工资的 1.2 倍, 30 号部门打印其工资的 1.3 倍数

在需要使用IF-THEN-ELSE逻辑时:

1、CASE表达式

CASE expr WHEN comparison_expr1 THEN return_expr1

  [WHEN comparison_expr2 THEN return_expr2

   WHEN comparison_exprn THEN return_exprn

   ELSE else_expr]

END

 

技术分享图片

 

 2、DECODE函数

DECODE(col|expression, search1, result1 ,

   [, search2, result2,...,]

   [, default])

技术分享图片

 

7.总结

  • 使用函数对数据进行计算
  • 使用函数修改数据
  • 使用函数控制一组数据的输出格式
  • 使用函数改变日期的显示格式
  • 使用函数改变数据类型
  • 使用 NVL 函数
  • 使用IF-THEN-ELSE 逻辑

 

Oracle数据库(四)—— 单行函数

标签:符号   tcap   单行函数   截断   ast   last   计算   http   init   

原文地址:https://www.cnblogs.com/wffrzh/p/9408384.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!