关闭

Oracle笔记(二)

124人阅读 评论(0) 收藏 举报


SELECT 语句

SELECT子句中可以直接指定字段名,也可以嵌套使用

concat是连接符,返回两个字段的拼接。

SELECT concat(ename,sal) FROM emp_tzm;
SELECT concat(concat(ename ,':'),sal) FROM emp_tzm;

拼接字符串常使用“||"来连接,更简单

SELECT ename||':'||sal FROM emp;



LENGTH()函数查询字段串字符个数:

SELECT ENAME , LENGTH(ename) FROM emp;

DUAL:ORACLE中的伪表
在使用SELECT语句查询内容时语法要求FROM 子句后面必须要根一个表名,当我们查询的数据不来自热火和一张表时可以使用伪表,这样查询出来的记录只会有一条记录


将给定字符内容转化为全大写,全小写,首字母大写。

对于initcap而言,单子间可以只用空格分隔,那么每个单词瘦子母都会大写。

SELECT UPPER(‘hello world’) FROM DUAL;

TRIM 函数:
去掉字符串中左右两边连续重复的字符。

ltrim rtrim
单独取出字符串左面或右面的字符
SELECT ltrim ('esdeddsdesesdesliteee','dse')FROM dual;

取出左侧或右侧指定字符串中所有字符,
直到指定字符串中没有该字符为止。


lapd ,rpad函数,补位函数:
lpad(char1,len,char2)
其中char2必须是单一的一个字符,作用为:显示char1内容,要求显示len位,若不足则在左侧添加若干char2一大到该位数,若超过,则截取char1内容,只显示len位。

substr(str,m,n)
m:指定位置处从1开始,但也可以是0或者负数。
n:截取字符长度,不写则是截取到末尾,若超过可以截取的长度,则也截取到末尾。


rund 四舍五入,
SELECT round(45.678,2) FROM dual;45.68
SELECT round(45.678) FROM dual;46

trunc(n[,m])
截取数字m默认为0,与rund区别在于仅截取不做四舍五入
SELECT trunc(45.678) FROM dual;45
SELECT trunc(45.678,2) FROM dual;45.67

MOD
MOD(m,n):返回m除以n后的余数
SELECT ename,sal,MOD(sal, 1000) FROM emp_tzm ;

CEIL(n)与floor(n)其中n是数字,通常是小数。
ceil:返回大于给定数字的最小整数(向上取整)
floor:返回小于给定数字的最大整数(向下取整)

SELECT CEIL (45.6780)FROM DUAL;
SELECT FLOOR (45.678)FROM DUAL;

CEIL(45.6780)
-------------
           46

FLOOR(45.678)
-------------
           45


----------------------------------------------------------------------------------------------------------------
oracle日期操作:

CREATE TABLE STUDENT_TZM(
ID NUMBER(4),
NAME CHAR(20),
registerDate DATE DEFAULT SYSDATE
);

日期类型之间可以比较大小,时间晚的大,时间早的小。
日期之间可以做减法操作,作为相差的天数。日期可以减数字,等同与加减指定的天数。

SELECT SYSDATE+1 FROM DUAL;

SELECT ename,hiredate FROM emp_tzm WHERE hiredate>to_date('1981-01-01','yyyy-mm-dd');

to_char()函数
常用与将一个给定的日期按照给定的日期格式转换为字符串


测试RR指定的世纪

SELECT to_char( to_date ('95-12-21','rr-mm-dd'),'yyyy-mm-dd') FROM dual;
SELECT to_char( to_date ('49-12-21','rr-mm-dd'),'yyyy-mm-dd') FROM dual;

TO_CHAR(TO_DATE('95-12-21','RR-MM-DD'),'YYYY-MM-DD')
---------------------------------------------------------------------
1995-12-21                                          

TO_CHAR(TO_DATE('49-12-21','RR-MM-DD'),'YYYY-MM-DD')
----------------------------------------------------------------------
2049-12-21 

日期格式字符串中,除字母与符号外的其他字符都需要使用双引号扩起来。

SELECT to_char(sysdate,'yyyy"年"mm"月"dd')FROM dual;

LAST_DAY(date)
该函数返回给定日期所在月的最后一天:
SELECT LAST_DAY(SYSDATE) FROM DUAL;

SELECT LAST_DAY(HIREDATE) FROM EMP_TZM;


ADD_MONTHS(date,i)
对给定日期加上给定的月。
i可正可负,负数则是减去。
查看每个员工入职20周年纪念日:
SELECT ename,add_months(hiredate, 20*12) FROM emp_tzm;

MONTHS_BETWEEN(date1,date2)

-------------------------------------------------------------------------
NEXT_DAY (date , i)
返回给定日期最近的,还没有过的周几?
1表示周日,7表示周六
LEAST,GREATEST
变长参数,可以传入任意个参数,类型一致即可。
LEAST:返回参数中最小的
GREATEST:返回参数中最大的
SELECT LEAST (SYSDATE,TO_DATE('2008-10-10','yyyy-mm-dd')) FROM dual;

EXTRACT 函数
可以提取一个日期中指定时间分量对应的值:
SELECT EXTRACT(YEAR FROM SYSDATE) FROM DUAL;
----------------------------------------------------------------------------

判断一个值是否为null不能使用“=”
而要使用 IS null。
判断非空用 IS NOT null

NULL与字符串拼接,等于什么也没做。
NULL与数字运算,结果还是NULL。

查看每个员工的收入(工资+奖金):


NVL(arg1,arg2)
 若arg1为NULL,则函数返回arg2的值,
否则返回arg1.
简单谁就是将NULL值替换男为一个非NULL值


查看员工的奖金情况,有奖金的显示"有奖金"没有奖金的显示“没有奖金”
SELECT ENAME ,SAL ,COMM,(SAL+NVL(COMM,0)) FROM EMP_TZM;



NVL2(arg1,arg2,arg3)
当arg1不为null时函数返回arg2,
当arg1为null时,返回arg3.

NVL后两个参数的类型不用与第一个一致。
只要后两个一致即可。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:2738次
    • 积分:127
    • 等级:
    • 排名:千里之外
    • 原创:10篇
    • 转载:0篇
    • 译文:0篇
    • 评论:5条
    文章分类
    最新评论