Oracle学习笔记——基础一起学 7

本文介绍了OracleSQL中的各种函数,如ASCII和CHR用于字符转换,LPAD和RPAD用于字符串填充,以及日期和时间函数如ADD_MONTHS、MONTHS_BETWEEN和EXTRACT等。还展示了如何使用这些函数进行数据操作和日期计算,如提取年龄和检查特定日期条件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以下是一些其他的字符函数:

CHR 和 ASCLL 可以相互转换

SQL> select ascii('a') from dual;

ASCII('A')

----------

        97

SQL> select chr(97) from dual;

C

-

A

LPAD 和 RPAD

SQL> select lpad('abcd',10,'x') from dual;

LPAD('ABCD

----------

xxxxxxabcd

--lpad就是把用任意字符,从左边增加满任意值。

--rpad就是从右面。

TRIM

LENGTH

DECODE(在2.2视频中讲解)

--日期和时间函数

--ADD_MONTHS 某一天之后多少月之后的日期(注意只有月差没有日差,年差)

SQL> select sysdate from dual;

SYSDATE

--------------

04-1月 -24

SQL> select add_months(sysdate,5) from dual;

ADD_MONTHS(SYS

--------------

04-6月 -24

--(现在5个月之后的那一天)

--MONTHS_BETWEEN

SQL> select months_between(sysdate,to_date('20090605','yyyymmdd')) from dual;

MONTHS_BETWEEN(SYSDATE,TO_DATE('20090605','YYYYMMDD'))

------------------------------------------------------

                                            174.968099

--(有整有零是差多少天没到174个月,他把天数转化成月数)

SQL> select months_between(sysdate,to_date('20140104','yyyymmdd')) from dual;

MONTHS_BETWEEN(SYSDATE,TO_DATE('20140104','YYYYMMDD'))

------------------------------------------------------

                                                   120

--(这个就是整数)

--oracle提取年(从当前时间提取年)

SQL> select extract(year from sysdate) from dual;

EXTRACT(YEARFROMSYSDATE)

------------------------

                    2024

--oracle提取月(从当前时间提取月)

SQL> select extract(month from sysdate) from dual;

EXTRACT(MONTHFROMSYSDATE)

-------------------------

                        1

----oracle提取天(从当前时间提取天)

SQL> select extract(day from sysdate) from dual;

EXTRACT(DAYFROMSYSDATE)

-----------------------

                      4

--LAST_DAY(提取当前月的最后一天)

SQL> select last_day(sysdate) from dual;

LAST_DAY(SYSDA

--------------

31-1月 -24

--加purge永久删除student表

SQL> drop table student purge;

--建立一个student表

SQL> create table student(sno number(6),birthday date,sname varchar2(10));

表已创建。

SQL> insert into student values(1,'11-1月-81','张三');

已创建 1 行。

SQL> commit;

提交完成。

SQL> select * from student;

       SNO BIRTHDAY       SNAME

---------- -------------- ----------

         1 11-1月 -81     张三

SQL> insert into student values(2,'10-3月-82','李四');

已创建 1 行。

SQL> commit;

提交完成。

SQL> insert into student values(3,'06-1月-83','王五');

已创建 1 行。

SQL> commit;

提交完成。

SQL> select * from student;

       SNO BIRTHDAY       SNAME

---------- -------------- ----------

         1 11-1月 -81     张三

         2 10-3月 -82     李四

         3 06-1月 -83     王五

--获得学生生日一年之后的日期

SQL> select sno,add_months(birthday,12) from student;

       SNO ADD_MONTHS(BIR

---------- --------------

         1 11-1月 -82

         2 10-3月 -83

         3 06-1月 -84

--得到所有年龄大于27岁学生的信息(1、可以把所有生日往后推27年,只要比现在的时间小说明大于27岁。)

SQL> select * from student where add_months(birthday,27*12) <sysdate;

       SNO BIRTHDAY       SNAME

---------- -------------- ----------

         1 11-1月 -81     张三

         2 10-3月 -82     李四

         3 06-1月 -83     王五

--求每个学生从出生那一天开始到现在一共有多少天。(直接相减,floor函数直接把小数点后面省略掉,保留整数)

SQL> select sysdate-birthday from student;

SYSDATE-BIRTHDAY

----------------

      15698.0321

      15275.0321

      14973.0321

SQL> select floor(sysdate-birthday) from student;

FLOOR(SYSDATE-BIRTHDAY)

-----------------------

                  15698

                  15275

                  14973

--查出生日期是当月的倒数第20天(可以得到张三)

SQL> select * from student where last_day(birthday)-20=birthday;

       SNO BIRTHDAY       SNAME

---------- -------------- ----------

         1 11-1月 -81     张三

如果能帮到你请感谢我的老婆“一行琉璃”

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值