一 介绍
1.函数分为单行函数和多行函数
2.单行函数分为:字符、数值、日期、转换、通用的函数
3.单行函数:
? 操作数据对象
? 接受参数返回一个结果
? 只对一行进行变换
? 每行返回一个结果
? 可以转换数据类型
? 可以嵌套
? 参数可以是一列或一个值
二 详解:
1. 字符函数分为
(1) 大小写控制函数
小写转换 : SQL> select lower("LAOWANG") from dual;
SQL> select * from emp where lower(ename)="smith";
大写转换: SQL> select upper("laowng") from dual;
只转换第一个字符为大写:
SQL> select initcap("laoWANG") from dual;
(2) 字符控制函数
连接字符串:SQL> select concat("hi","laowang") from dual;
截取字符串:SQL> select substr("laowang",0,1) from dual; 结果 l
SQL> select substr("laowang",0,2) from dual; 结果 la
SQL> select substr("laowang",1,2) from dual;结果la
可以看出截取字符串的时候是从索引为1开始的
字符串的长度:SQL> select length("laowang") from dual; 结果为6
获取指定字符的索引:SQL> select instr("laowang","a") from dual;
结果为2
从左边截取10个字符:SQL> select lpad("laowang",10) from dual;
结果 laowang
没有的用*代替:SQL> select lpad("laoang",20,"*") from dual;
结果:**************laowang
从右边截取:SQL> select rpad("laoang",20,"*") from dual;
去空格:SQL> select trim("laowang ") from dual;
注:取出的是’’中字符前后的字符,去不掉两个字符之间的的空格
查询某字符中包含某字符:
SQL> select * from emp where instr(ename,"R")!=0;或
SQL> select * from emp where instr(ename,"R") <>0;
SQL> select * from emp where instr(ename,"R")=4;
R在索引为4的ename
2.数值函数
截取.后两位四舍五入:SQL> select round(234324.354,2) from dual;
结果为234324.35
截取.后两位,不截取:SQL> select mod(1700,200) from dual;
结果为:100
SQL> select mod(1701.5,200) from dual;
结果为:101.5
3.日期函数
日期的差值:
SQL> select to_date("08-8月-08")-to_date("13-3月-12") from dual; 结果为:-1313天数
SQL> select (to_date("08-8月-08")-to_date("13-3月-12"))/365 from dual; 结果:-3.5972603
两个日期相差的月数:
SQL> select months_between(sysdate,hiredate) from emp;
向指定日期中加入若干月数:
SQL> select add_months(sysdate,3) from dual;
指定日期的下一个日期:
SQL> select next_day(sysdate,"星期一") from dual;
本月的最后一天:SQL> select last_day(sysdate) from dual;
日期四舍五入:SQL> select round(sysdate,"yyyy") from dual;
SQL> select round
(to_date("1998-10-08","yyyy-mm-dd"),"yyyy") from dual;
日期截断:SQL> select trunc(sysdate,"YEAR") from dual;
4.转换函数
数据类型转换分为隐形的和显性的,我们对显型转换来介绍
转换函数对日期的转换:
首先显示出当前日期:SQL> select to_char(sysdate) from dual;
SQL> select to_char(sysdate,"YYYY-MM-DD") from dual;
结果为:2012-03-13
SQL> select to_char(sysdate,"YYYY-MM-DD-day") from dual;
结果为:2012-03-13-星期二
SQL> select to_char(sysdate,"YYYY/MM/DD-day") from dual;
结果为:2012/03/13-星期二
SQL> select to_char(sysdate,"YYYY"年"MM"月"DD"日"-day") from dual; 结果为:2012年03月13日-星期二
SQL> select to_char(sysdate,"year"年"mon-DD-day") from dual; 结果为:twenty twelve年3月 -13-星期二
SQL> select to_char(sysdate,"yyyy-mm-dd HH24:MI:SS AM")
from dual; 结果为:2012-03-13 10:30:39 上午
SQL> select to_char(sysdate,"DD "of" MONTH") from dual;
结果:13 of 3月
转换函数对数字的转换:
SQL> select to_char(sal,"$99,999.00") from emp;
结果为: $800.00 美元符
SQL> select to_char(sal,"L99,999.00") from emp;
结果为:¥800.00 本地的
字符串转换为数字:SQL> select to_number("999.00") from dual;
结果为:999
RHEL/CentOS 5.x使用yum快速安装MySQL 5.5.xOrcale查询练习相关资讯 oracle数据库教程
- Oracle raw数据类型介绍 (01/29/2013 10:05:53)
- 监听器注册与ORA-12514 错误分析 (11/13/2012 14:30:08)
- Oracle SQL的cursor理解 (11/13/2012 14:16:17)
| - Oracle 如何强制刷新Buffer Cache (01/29/2013 10:02:46)
- dblink致Oracle库的SCN变成两库的 (11/13/2012 14:24:41)
- Linux操作系统下完全删除Oracle数 (11/13/2012 08:25:52)
|
本文评论 查看全部评论 (0)