使用oracle decode函数出现未找到要求的from关键字?,Oracle_day1(单行函数)

0818b9ca8b590ca3270a3433284dd417.png

1.字符函数:

0818b9ca8b590ca3270a3433284dd417.png

(1)LOWER:将字符转换成大写

(2)UPPER:将字符转换成小写

(3)INITCAP:将字符的首字母大写

注意:别名不要用单引号,否则会出现ORA-00923: 未找到要求的 FROM 关键字

SELECT LOWER('hello WORLD') "字母小写",UPPER('hello WORLD') "字母大写",

INITCAP('hello WORLD') "首字母大写"

FROM DUAL;

0818b9ca8b590ca3270a3433284dd417.png

(4)SUBSTR(a,b):表示从字符串a中的第b位开始(包括b位,从1开始)一直截取到最后

select substr('12345',3)

from dual;

0818b9ca8b590ca3270a3433284dd417.png

SUBSTR(a,b,c):表示从字符串a中的第b位开始(包括b位)截取c位

select substr('12345',2,2)

from dual;

0818b9ca8b590ca3270a3433284dd417.png

(5)length:统计字符数

lengthb:统计字节数

SELECT LENGTH('中国'),LENGTHB('中国')

FROM DUAL;

0818b9ca8b590ca3270a3433284dd417.png

(6)INSTR(a,b):字符串a中如果包含b子串,那么就返回索引位置(从1开始)。不能存在的话返回0.

SELECT INSTR('HELLO WORLD','LL')

FROM DUAL;

0818b9ca8b590ca3270a3433284dd417.png

(7)LPAD(a,b,c):a表示需要被填充的字符串,b表示字符串和填充的字符串加起来总共多少位,c表示用什么字符进行左填充。

RPAD:同上,右填充

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

(8)TRIM(a,FROM b):a要被去掉的字符(长度只能是1),b从这个字符串中去掉a.

0818b9ca8b590ca3270a3433284dd417.png

(9)REPLACE(a,b,c):a表示要被替换的字符串,b表示将a中哪些个字符串替换掉,c表示替换成什么字符串。

SELECT REPLACE('HELLO WORLD','W','9')

FROM DUAL;

0818b9ca8b590ca3270a3433284dd417.png

数字函数:

(1)ROUND(a,b)b缺省为0:四舍五入

SELECT ROUND(45.926,2) 一,ROUND(45.926,1) 二,ROUND(45.926,0) 三,ROUND(45.926,-1) 四,ROUND(45.926,-2) 五 FROM DUAL;

0818b9ca8b590ca3270a3433284dd417.png

ROUND(45.926,-1):表示四舍五入到十位,这时候看个位,如果大于等于5就进一位,没超就不变。所以结果是50

ROUND(45.926,-2):表示四舍五入到百位,这个时候看十位,十位是4,而百位是0,所以最后结果还是0.

(2)TRUNC(a,b)b缺省为0:截断

SELECT TRUNC(45.926,2) 一,TRUNC(45.926,1) 二,TRUNC(45.926,0) 三,TRUNC(45.926,-1) 四,TRUNC(45.926,-2) 五 FROM DUAL;

0818b9ca8b590ca3270a3433284dd417.png

2.日期函数:

0818b9ca8b590ca3270a3433284dd417.png

获取系统时间

SELECT SYSDATE FROM DUAL

0818b9ca8b590ca3270a3433284dd417.png

SELECT TO_CHAR(SYSDATE) FROM DUAL

0818b9ca8b590ca3270a3433284dd417.png

SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD HH24:MI:SS') FROM DUAL

0818b9ca8b590ca3270a3433284dd417.png

精确到毫秒

--更加精确

SELECT TO_CHAR(SYSTIMESTAMP,'YYYY-MM-DD HH24:MI:SS:FF') FROM DUAL;

0818b9ca8b590ca3270a3433284dd417.png

日期加上一天或减去一天

SELECT (SYSDATE-1) 昨天,SYSDATE 今天,(SYSDATE+1)明天 FROM DUAL;

0818b9ca8b590ca3270a3433284dd417.png

有了MONTHS_BETWEEN这个函数,象qq用了多少年,直接可以用当前时间减去注册时间就能算出来了,不用单独去用一个字段存储,所以也免去了每年都要去更新用了多少年这个字段

--计算两个时间相差的月份(是非常精确的,包括了2月,和31天30天情况) 如果参数相反,则结果为负数

SELECT MONTHS_BETWEEN(SYSDATE,HIREDATE) FROM EMP;

0818b9ca8b590ca3270a3433284dd417.png

--向指定日期中加上若干月数ADD_MONTHS

SELECT ADD_MONTHS(SYSDATE,3) FROM DUAL;

0818b9ca8b590ca3270a3433284dd417.png

--从今天开始算(2013.10.15 星期二),下一个星期二

SELECT NEXT_DAY(SYSDATE,'星期二') FROM DUAL;

0818b9ca8b590ca3270a3433284dd417.png

--从今天开始算(2013.10.15 星期二),下一个星期三,经过测试发现是这个礼拜的,也就是离当前日期最近的那个

SELECT NEXT_DAY(SYSDATE,'星期三') FROM DUAL;

0818b9ca8b590ca3270a3433284dd417.png

--查询本月的最后一天 要传入当前日期

SELECT LAST_DAY(SYSDATE) FROM DUAL;

0818b9ca8b590ca3270a3433284dd417.png

--对日期进行四舍五入(2013.10.15 星期二) 如果以月四舍五入,那么到了16号才会进一个月 15号算当月

SELECT ROUND(SYSDATE,'MONTH') 以月进行, ROUND(SYSDATE,'YEAR') 以年进行 FROM DUAL;

0818b9ca8b590ca3270a3433284dd417.png

--对日期进行截断(2013.10.15 星期二) 就是当月 和当年

SELECT TRUNC(SYSDATE,'MONTH') 以月进行, TRUNC(SYSDATE,'YEAR') 以年进行 FROM DUAL;

0818b9ca8b590ca3270a3433284dd417.png

3.转换函数

1.TO_CHAR:将日期转换成字符串

--将日期转换为字符串,如果要在格式化的代码中用自定义的内容,那么就需要在自定义内容上加双引号

SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD HH24:MI:SS"今天是" DAY') FROM DUAL;

0818b9ca8b590ca3270a3433284dd417.png

2.TO_DATE将字符串转换成日期:

--将字符串按照指定格式转换为日期

SELECT TO_DATE('2013-10-15 17:04:54今天是 星期二','YYYY-MM-DD HH24:MI:SS"今天是" DAY') FROM DUAL;

0818b9ca8b590ca3270a3433284dd417.png

3.TO_CHAR:将数字转换成字符串

--查询员工的薪水:货币符号,两位小数,千位符 将数字按照指定格式转换为字符串

SELECT SAL,TO_CHAR(SAL,'L9,999.99') FROM EMP;

0818b9ca8b590ca3270a3433284dd417.png

4.TO_NUMBER:将字符串转换成数字

--将字符串按照指定格式还原成数字

SELECT TO_NUMBER('¥800.00','L9,999.99') FROM EMP;

0818b9ca8b590ca3270a3433284dd417.png

4.通用函数

1.nvl(a,b):表示,如果a为null,则显示b。

SELECT SAL*12+NVL(COMM,0) FROM EMP;

2.nvl2(a,b.c):当a为null时,返回b,否则返回c

SELECT SAL*12+NVL2(COMM,COMM,0) FROM EMP;

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

中间不需要逗号

SELECT ENAME,JOB,SAL 涨前,

CASE JOB WHEN 'PRESIDENT' THEN SAL+1000

WHEN 'MANAGER' THEN SAL+800

ELSE SAL+400

END 涨后

FROM EMP ;

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

中间需要逗号

SELECT ENAME,JOB,SAL 涨前,

DECODE(JOB,'PRESIDENT',SAL+1000,

'MANAGER',SAL+800,

SAL+400) 涨后的

FROM EMP ;

0818b9ca8b590ca3270a3433284dd417.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值