【Oracle学习笔记】单行函数

原创 2017年07月14日 16:54:15

写在前面:

单行函数的概念:

单行函数:接受一个数据,输出一个数据;
多行函数:聚合函数,分组函数。接受一组数据,输出一个数据。

常见字符函数

大小写相关: LOWER , UPPER , INITCAP
其他:TRIM , LTRIM , RTRIM , LPAD , PPAD , INSTR , SUBSTR , LENGTH , CONCAT , REPLACE

  • LOWER会将所有字符转换为小写
  • UPPER会将所有字符转换为大写
  • INITCAP会将首字母转换为大写

example:

SELECT lower('Hello'),upper('Hello'),initcap('Hello')
FROM dual;
  • TRIM从字符串的首尾去掉特定字符
  • LTRIM从字符串的首部去掉特定字符
  • RTRIM从字符串的尾部去掉特定字符

example:

SELECT trim('H' FROM 'HelloHH'), ltrim('HelloHH', 'H'),rtrim('HelloHH', 'H')
FROM dual;
  • LPAD向左补齐
  • PPAD向右补齐

grammar : lpad(数值,多少位,填充内容) rpad(数值,多少位,填充内容)

example :

SELECT lpad(1000,7,'*'),rpad(1000,7,'*')
FROM dual;
  • INSTR 查找字符串的位置(注意:在Oracle中,字符串的位置是从1开始的

grammar : instr(原来的字符串,要查找位置的字符串)

example :

SELECT instr('hello tom','tom')
 FROM dual;
  • SUBSTR 求字串,从某个位置到开始截取一定长度

grammar : substr(字符串,从哪个位置开始截取,截取多少个字符[不写则截取到最后一个])

example:

SELECT substr('hello',3,2)
FROM dual;
  • LENGTH 求字符串的长度

example :

SELECT length('tom')
FROM dual;
  • CONCAT 连接两个字符串

example :

SELECT concat('tom','my')
FROM dual;
  • REPLACE替换字符串

example:

SELECT replace('hello','h','xxx')
FROM dual;

常用字符函数例子整合:

SELECT lower('Hello'),upper('Hello'),initcap('Hello')
FROM dual;

SELECT trim('H' FROM 'HelloHH'), ltrim('HelloHH', 'H'),rtrim('HelloHH', 'H')
FROM dual;

SELECT lpad(1000,7,'*'),rpad(1000,7,'*')
FROM dual;

SELECT instr('hello tom','tom')
FROM dual;

SELECT substr('hello',3,2)
FROM dual;

SELECT length('tom')
FROM dual;

SELECT concat('tom','my')
FROM dual;

SELECT replace('hello','h','xxx')
FROM dual;

常见数值函数

  • ROUND四舍五入

example :

SELECT round(123.456,2),round(123.456,-2),round(123.45,0),round(123.456)
FROM dual;

round(123.456,2)小数点两位后四舍五入
round(123.456,-2)小数点前两位四舍五入
round(123.45,0)按照小数点四舍五入
round(123.456)与round(123.456,0)相同

  • TRUNC去尾

example :

SELECT trunc(12.456,2),trunc(123.456,-2),trunc(123.45,0),trunc(123.456)
FROM dual;

trunc(12.456,2)小数点后保留两位
trunc(123.456,-2)小数点前保留两位
trunc(123.45,0)按照小数点保留
trunc(123.456)与trunc(123.456,0)相同

  • MOD求模

example :

SELECT mod(12,5)
FROM dual;

常用数值函数例子整合:

SELECT round(123.456,2),round(123.456,-2),round(123.45,0),round(123.456)
FROM dual;

SELECT trunc(12.456,2),trunc(123.456,-2),trunc(123.45,0),trunc(123.456)
FROM dual;

SELECT mod(12,5)
FROM dual;

常见日期函数

  • SYSDATE获取系统当前日期

example :

SELECT sysdate
FROM dual;
  • MONTHS_BETWEEN获取两个日期间的相差月数

example : 获取emp表中员工的入职日期到今天相差的月数

SELECT ename,months_between(sysdate,hiredate)
FROM emp;
  • ADD_MONTH获取几个月后的日期

exmaple : 获取三个月以后的日期

SELECT add_months(sysdate,3)
FROM dual;
  • LAST_DAY获取本月最后一天的日期

example :

SELECT last_day(sysdate)
FROM dual;
  • EXTRACT从日期中获取某一部分值

example : 获取当前日期的年份

SELECT extract(YEAR FROM sysdate)
FROM dual;

example : 获取当前日期的月份

SELECT extract(MONTH FROM sysdate)
FROM dual;

example : 获取当前日期的号数

SELECT extract(DAY FROM sysdate)
FROM dual;

常见日期函数例子整合:

SELECT sysdate
FROM dual;

SELECT ename,months_between(sysdate,hiredate)
FROM emp;

SELECT add_months(sysdate,3)
FROM dual;

SELECT last_day(sysdate)
FROM dual;

SELECT extract(YEAR FROM sysdate)
FROM dual;

SELECT extract(MONTH FROM sysdate)
FROM dual;

SELECT extract(DAY FROM sysdate)
FROM dual;

常见转换函数

  • TO_CHAR将日期或数值转换为指定格式的字符

example : 将日期转换为指定格式的字符

SELECT to_char(sysdate,'YYYY-MM-DD DAY HH24:MM:SS')
FROM dual;

example : 将数值转换为指定格式的字符

SELECT to_char(123.45,'L9,999,999.00')
FROM dual;

其中L表示当地字符,00 表示小数点后如果没有两位小数,则用0填充

  • TO_DATE将指定格式字符转换为日期

example :

SELECT to_date('1980-01-01','YYYY-MM-DD')
FROM dual;
  • TO_NUMBER将指定格式字符串转换为数值

example :

SELECT to_number('$1,222.34','$9,999.99')
FROM dual;

常见转换函数例子整合:

SELECT to_char(sysdate,'YYYY-MM-DD DAY HH24:MM:SS')
FROM dual;

SELECT to_char(123.45,'L9,999,999.00')
FROM dual;

SELECT to_date('1980-01-01','YYYY-MM-DD')
FROM dual;

SELECT to_number('$1,222.34','$9,999.99')
FROM dual;

其他函数

空值转换函数:

  • NVL字段为空,则用相同类型替代

example :

SELECT ename,comm,nvl(comm,0)
FROM emp;

如果字段comm为空,则用与comm数值类型相同的0代替

  • NVL2如果字段为空,则返回第二个参数,反之则返回第三个参数

example :

SELECT ename,comm,nvl2(comm,0,sal)
FROM emp;

如果comm字段为空,则用0代替,如果不为空,则用sal代替

  • NULLIF两个字段相同,则为空,否则返回第一个参数的值

exmaple :

SELECT nullif('123','123')
FROM dual;

控制转换函数例子整合:

SELECT ename,comm,nvl(comm,0)
FROM emp;

SELECT ename,comm,nvl2(comm,0,sal)
FROM emp;

SELECT nullif('123','123')
FROM dual;

条件分支函数

  • CASE

example :

SELECT ename, deptno, sal,
            CASE deptno
            WHEN 10 THEN sal + 100
            WHEN 20 THEN sal + 200
            WHEN 30 THEN sal + 300
            ELSE sal END AS salary
FROM emp;
  • DECODE

example : 按照部门号码进行薪资的增加,部门号为10,薪资增加100,部门号为20薪资增加200,部门号为30,薪资增加300,其他则没有变化

SELECT ename, deptno, sal,
        decode(deptno,
                10,sal + 100,
                20,sal + 200,
                30,sal + 300,
                sal) AS salary
    FROM emp;
SELECT ename, deptno, sal,
        CASE 
        WHEN deptno = 10 THEN sal +100
        WHEN deptno = 20 THEN sal +200
        WHEN deptno = 30 THEN sal +300
        ELSE sal END AS salary
FROM emp;

decode是一个函数, case是一个表达式
但是case有更强大的能力

条件分支函数例子整合:

SELECT ename, deptno, sal,
    decode(deptno,
            10,sal + 100,
            20,sal + 200,
            30,sal + 300,
            sal) AS salary
FROM emp;            

SELECT ename, deptno, sal,
        CASE deptno
        WHEN 10 THEN sal + 100
        WHEN 20 THEN sal + 200
        WHEN 30 THEN sal + 300
        ELSE sal END AS salary
FROM emp;

SELECT ename, deptno, sal,
        CASE 
        WHEN deptno = 10 THEN sal +100
        WHEN deptno = 20 THEN sal +200
        WHEN deptno = 30 THEN sal +300
        ELSE sal END AS salary
FROM emp;        
版权声明:转载请注明我的个人微信平台 暴沸

Oracle单行函数和多行函数

单行函数和多行函数示意图:   单行函数分为五种类型:字符函数、数值函数、日期函数、转换函数、通用函数 单行函数: [sql] view plaincopy --大小写控制函数  sel...
  • lailai186
  • lailai186
  • 2013年10月10日 14:39
  • 11463

ORACLE单行函数与多行函数之一

单行函数与多行函数 最直观的解释是:单行函数输入一行,输出一行。多行函数输入多行,输出一行。如下图: 单行函数分为五种类型:字符函数、数值函数、日期函数、转换函数、通用函数 多行函数: 从...
  • q947817003
  • q947817003
  • 2013年11月02日 14:01
  • 1439

oracle单行函数练习题

--第四章  单行函数 练习1 • 1.写一个查询,用首字母大写,其它字母小写显示雇员的 ename,显示名字的长度,并给每列一个适当的标签,条件是满足所有雇员名字的开始字母是J、A 或 ...
  • qq_36730964
  • qq_36730964
  • 2017年12月12日 18:59
  • 119

【Oracle练习】③第4章 单行函数

第四章 1. 显示dname和loc中间用-分隔 SELECT dname||'-'||loc FROM dept; 2. 将部门名称左填充为10位 select lpad(dname,10,...
  • u011668824
  • u011668824
  • 2014年08月08日 19:30
  • 364

Oracle单行函数和多行函数实例

单行函数和多行函数示意图:   单行函数分为五种类型:字符函数、数值函数、日期函数、转换函数、通用函数 单行函数: --大小写控制函数 select lower('Hello Wor...
  • furongkang
  • furongkang
  • 2011年10月11日 20:41
  • 2916

ORACLE 常用单行函数

select lower('Hello WOrld') from dual;--小写 select upper('Hello WOrld') from dual;--大写 select initc...
  • m0_37298602
  • m0_37298602
  • 2017年08月17日 14:23
  • 71

oracle的单行函数以及多行函数(聚合函数、分组函数)的使用

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和...
  • geilidashen
  • geilidashen
  • 2015年10月18日 15:28
  • 512

Oracle学习笔记(5)-----------单行函数

Oracle笔记(五) 单行函数 虽然各个数据库都是支持SQL语句的,但是每一个数据库也有每一个数据库自己所支持的操作函数,这些就是单行函数,而如果要想进行数据库开发的话,除了要会使...
  • u011225629
  • u011225629
  • 2015年05月28日 15:57
  • 890

oracle学习 第四章 单行函数 ——01

与其他的程序设计语言类似,为了方便的使用Oracle数据库,Oracle SQL提供了大量的函数。实际上这些函数增强了SQL语言的功能。这一章我们开始介绍SQL的函数。 4.1 什么是函数 您可以在许...
  • q337943198
  • q337943198
  • 2016年04月19日 22:42
  • 208

Oracle学习笔记【02】:单行函数

Oracle常用单行函数 一、字符函数 1、UPPER 将全部内容转为大写 LOWER()转换为小写        Select * from emp where ename=UPPER(‘sm...
  • u014353495
  • u014353495
  • 2016年04月07日 09:25
  • 114
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【Oracle学习笔记】单行函数
举报原因:
原因补充:

(最多只允许输入30个字)