单行函数

定义:只对一行进行变换,并产生结果

6种

一、字符函数

第一类:lower 、upper、 initcap--大小写控制函数

第二类:concat 、substr、length/lengthb、 instr、lpad | rpad 、trim 、replace

1、select lower('Hello World')转小写,upper ('Hello World')转大写,initcap('hello world')首字母大写 from dual;

2、select substr(a,b) 从a这个字符串中第b位开始取,取右边所有的字符 from dual;

select substr(a,b,c)从a这个字符串中第b位开始取,取c位 from dual;

3、length--字符数 lengthb--字节数

对于英文来说:字符数=字节数

对中文还说:2字符数=字节数

4、instr(a,b)--查找字符:在a中找b,返回值为b的位置

select instr('Hello World','ll')位置 from dual;

5、lpad 左填充   rpad 右填充 ---3个参数 例:abcd 变成10位

select lpad('abcd',10,'*')左,rpad('abcd',10,'*')右 from dual;---返回 ******abcd   和abcd******

6、trim --去掉前后指定的字符---区分大小写

select  trim ('H' from 'Hello WorldH') from dual;   返回ello World

7、replace --替换

select replace ('Hello World','l','*') from dual;  返回He**o Wor*d

8、concat--连接两个字符,多个字符需要嵌套或用'||'

select concat('Hello','World') from dual;

二:数字函数

1、round:四舍五入  trunc:截断(只舍去)  mod:求余

e.g. select round(45.926,2),round (45.926,1),round(45.926,0),round(45.926,-1),round(49.926,-2) from dual;

结果 45.93  45.9  46  50  0

select trunc(45.926,2),trunc (45.926,1),trunc(45.926,0),trunc(45.926,-1),trunc(49.926,-2) from dual;

结果 45.92  45.9  45  40  0

-------round函数和trunc函数不仅仅是数值函数,也是日期函数

三、日期函数

---------日期函数  months_between    add_months  next_day  last_day round  trunc

mysql: date 年月日 datetime 年月日小时分钟秒

select now();

oracle:date 年月日小时分钟秒---默认格式dd-mon-year

select sysdate from dual;

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

日期的数学运算

1日期加或减一个数字都是日期;数字的单位是天

2、两个日期相减返回日期之间相差的天数

3、可以用数字除24来向日期中加上或减去小时

select sysdate,sysdate-1,sysdate+1 from dual;

2、计算员工工龄:天 星期 月 年

select  ename,hiredate,(sysdate-hiredate) 天,(sysdate-hiredate)/7 星期,(sysdate-hiredate)/30 月,(sysdate-hiredate)/365 年 from dual;

select  ename,hiredate,(sysdate-hiredate)/30 月1,months_between(sysdate,hiredate)月2 from dual;----两个日期相差的月数

select  add_months(sysdate,78) from dual;------向指定日期中加若干月

select last_day(sysdate) from dual;------时间所在月份的最后一天

select next_day (sysdate,'星期二') from dual;----指定日期的下一个日期  它的应用:每个周一自动备份表的 数据 第一、分布式数据库  第二、快照(不是很明白)

oracle中,备份和恢复数据库都是用RMAN(Recovery Manager)

(在rman target中登录   输入 back database;---备份数据库   输入 recovery  database;---恢复数据库)

3、不允许日期加日期,没有意义

4、假设sysdate='25-jul-95'

round(sysdate,'month')------01-aug-95

round(sysdate,'year')-------01-jan-96

trunc(sysdate,'month')-----01-jul-95

trunc(sysdate,'month')-----01-jan-95

四:转换函数---意思:在不同的数据类型之间完成数值的转换,分为隐式转换和显式转换

隐式转换:由oracle自动完成  

1、源码 varchar2  or  char  转换成 number

2、源码 varchar2  or  char  转换成 date

3、源码number 转换为 varchar2

4、源码date  转换为 varchar2

前提:被转换对象是可以转换的

显式数据类型转换

to_number /to_char/to_date/

e.g.select  to_char(sysdate,'yyyy-mm-dd hh24:mi:ss"今天是"day ') from dual;

-----查询员工薪水:两位小数  千位符 本地货币代码

e.g. select to_char(sal,'L9,999.99') from dual;

数字对字符串转换:to_char 、字符串对数字转换:to_number、

字符串对日期转换:to_date、日期对字符串转换:to_char 

五、通用函数

这些函数适用于任何数据类型,同时也适用于空值

nvl(expr1,expr2)//////nvl2(expr1,expr2,expr3)----当a=null时返回c,否则返回b

nullif(expr1,expr2)---当a=b,返回空值,否则返回a

coalesce(expr1,expr2,...,exprn)---从左往右找到第一个不为null的值

varchar2是varchar的增强,nvl2是nvl的增强 

六:条件表达式

1、在Sql中使用if-then-else逻辑

2、使用两种方法:

case表达式:SQL99的语法,类似Basic,比较繁琐

Decode函数:Oracle自己的语法,类似java,比较简洁

select ename,job,salary涨前,case job when 'manage' then salary+800

                                                             when 'president' then salary+1000 

                                                             else salary+600  end 涨后  from  emp;

select ename,job,salary涨前,decode (job,'president',sal+1000,'manager',sal+800,sal+400) from emp;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,294评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,493评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,790评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,595评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,718评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,906评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,053评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,797评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,250评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,570评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,711评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,388评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,018评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,796评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,023评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,461评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,595评论 2 350

推荐阅读更多精彩内容