Oracle语句深入了解Day02

news/2024/5/18 21:45:40

一、单行函数

1. 字符函数
1.1 求字符串长度 length()
select length('123') from dual;
1.2 求字符串的子串 substr(字符串,起始位置,数据数量)
select substr('abcd中efg',1,2) from dual;
1.3 求子串在字符串中的位置  instr(字符串,字串) => 位置
SELECT INSTR('abcd中efg', '中') FROM DUAL;
1.4 substr 和 instr 结合使用 获取指定字符串中 指定字符 后的数据
已知字符串 6666@qq.com 获取邮箱类型 ==>qq.com
select substr('6666@qq.com',INSTR('6666@qq.com', '@') + 1,10) from dual;
1.5 字符串拼接 concat(字符串1,字符串2)
select concat('1','2') from dual;
1.6 多个字符串拼接 ||
select 'a'||'b'||'c' from dual;

二、数值函数

2. 数值函数
2.1 四舍五入函数 round
select round(1.64) from dual;
2.2 指定四舍五入小数位数
select round(1.65,1) from dual;
2.3 截取函数 trunc(数值,小数位数)
select trunc(1.66,1) from dual;
2.4 取模 mod(数值,被除数)
with t1 as (
select mod(10,2) ret from dual)
select * from t1 where ret=0;
2.5 创建表my_test02 创建语句如下
create table my_test02(num number
);insert into my_test02 values(1);
insert into my_test02 values(2);
insert into my_test02 values(3);
insert into my_test02 values(4);
insert into my_test02 values(5);
insert into my_test02 values(6);
insert into my_test02 values(7);
-- 获取表my_test02中所有的偶数
with t1 as (
select num,mod(num,2) ret from my_test02)
select num from t1 where ret=0;

 三、时间函数

3. 时间函数
3.1 获取系统时间 sysdate
select sysdate from DUAL;
3.2 加月函数 add_months(时间类型,3)
select add_months(sysdate,1) from DUAL;
3.3 加减时间通用方法 select sysdate + interval '1' minute from dual;
select sysdate - interval '1' month from dual;3.4 时间相关函数汇总
Orcale中时间类型date是 必须为 年月日时分秒的样式
和mysql中不一样 没有单独的year时间类型3.4.1 to_date是把字符串转化为时间类型:
SELECT TO_DATE('2006-05-01 19:25:34', 'YYYY-MM-DD HH24:MI:SS') FROM DUAL;SELECT TO_DATE('2006-05-01 19:25', 'YYYY-MM-DD HH24:MI') FROM DUAL;SELECT TO_DATE('2006-05-01 19', 'YYYY-MM-DD HH24') FROM DUAL;SELECT TO_DATE('2006-05-01', 'YYYY-MM-DD') FROM DUAL;SELECT TO_DATE('2006-05', 'YYYY-MM') FROM DUAL;SELECT TO_DATE('2006', 'YYYY') FROM DUAL;3.4.2 trunc函数截取后的结果依然为时间类型
select sysdate S1,trunc(sysdate) S2,trunc(sysdate,'year') YEAR,trunc(sysdate,'month') MONTH ,trunc(sysdate,'day') DAYfrom dual;
获取当前日期 和 日期2024-04-10 的差值3.4.3 to_char函数的结果为字符串类型
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') as nowTime from dual;select to_char(sysdate,'yyyy') as nowYear from dual;select to_char(sysdate,'mm') as nowMonth from dual;select to_char(sysdate,'dd') as nowDay from dual;select to_char(sysdate,'hh24') as nowHour from dual;select to_char(sysdate,'mi') as nowMinute from dual;select to_char(sysdate,'ss') as nowSecond from dual;3.5 字符串转数字 TO_NUMBER
select to_number('123') from dual;

四、其他函数

4. 其他函数
空值处理函数 NVL
NVL (检测的值 ,如果为 null 的值)
select nvl(null,1) from dual;
NVL2 (检测的值,如果不为 null 的值,如果为 null 的值)
select nvl(null,10,20) from dual;

五、数据行转列

1. 按月份统计 2012 年各个地区的水费 T_AREA t_account
区域 一月 二月 三月
海淀 xxx xxx xxx
西城 xxx xxx xxx
select(select name from T_AREA where T_AREA.ID=T_ACCOUNT.AREAID) 区域,sum(case when MONTH='01' then MONEY end ) as 一月,sum(case when MONTH='02' then MONEY end) as 二月,sum(case when MONTH='03' then MONEY end) as 三月
from T_ACCOUNT
where YEAR = '2012'
group by AREAID;
-- 解析
with t1 as (
select AREAID from T_ACCOUNT where YEAR = '2012'
group by AREAID)
select NAME from T_AREA,t1 where T_AREA.ID=t1.AREAID;

 六、集合运算

1、并集

-- 并集运算
1. UNION ALL 不去掉重复记录 t_owners
select * from T_OWNERS
union all
select * from T_OWNERS;
2. UNION  去掉重复记录 t_owners
select * from T_OWNERS
union
select * from T_OWNERS;

2、交集 

交集运算
3. intersect 返回属于两个集合的部分
select id,name from T_OWNERS where id<=7
intersect
select id,name from T_OWNERS where ID>=4;
inner join方式
select T_OWNERS.id,T_OWNERS.name from T_OWNERS
inner join
(select id,name from T_OWNERS where ID>=4) t2 on T_OWNERS.id=t2.ID;
t1,t2 where方式
select * from
(select id,name from T_OWNERS where id<=7) t1,(select id,name from T_OWNERS where ID>=4) t2 where t1.id=t2.ID;

 3、差集

-- 差集运算
4. minus 返回属于第一个集合 但不属于第二个集合的部分
select id,name from T_OWNERS where id<=7
minus
select id,name from T_OWNERS where ID>=4;
5. minus 运算符来实现分页
select id,name from T_OWNERS where id<=4
minus
select id,name from T_OWNERS where ID<=2;

 七、窗口函数

over(partition by 分组字段order by 排序字段rows between current row and 1 followingrange between 1 preceding and 1 following
)
current row 当前行
1 following 后1行
1 preceding 前一行t_owners表
按照区域统计id的和 显示id,name,addressid
如果是sum和count 那么 在order by的时候 那是一个累计统计
如果加order by后 max min 也是组内累计逐行统计
select id,name,addressid,sum(id) over (partition by ADDRESSID order by idrange between current row and 1 following ) v1
from T_OWNERS;

今天的语法会比较难,知识量也比较大,需要学习的同学,要多多复习,巩固已经所学知识

加油。🩷🩷🩷 


https://dhexx.cn/news/show-5318066.html

相关文章

深度学习在三维点云处理与三维重建中的应用探索

目录 点云数据处理 数据清洗 数据降噪和简化 数据配准 特征提取 数据增强 数据组织 性能考量 PointNet PointNet 算法问题 改进方法 三维重建 重建算法 架构模块 流程步骤 标记说明 优点和挑战 点云数据处理 数据清洗 去噪&#xff1a;点云数据通常包含噪声…

永磁同步电机无感FOC(扩展卡尔曼滤波EKF位置观测控制)

文章目录 1、前言2、扩展卡尔曼滤波器原理2.1 预测阶段&#xff08;时间更新阶段&#xff09;2.2 校正阶段&#xff08;状态更新阶段&#xff09; 3、永磁同步电机EKF的模型4、永磁同步电机EKF的无位置状态观测仿真4.1 核心模块&#xff08;在滑膜、龙伯格、磁链等观测器基础上…

VScode远程连接虚拟机提示: 无法建立连接:XHR failed.问题解决方案

一问题描述 在vscode下载插件Remote-SSH远程连接虚拟机时提示无法建立连接 二.最大嫌疑原因&#xff1a; 我也是在网上找了许久&#xff0c;发现就是网络原因&#xff0c;具体不知&#xff0c;明明访问别的网页没问题&#xff0c;就是连不上&#xff0c;然后发现下载vscode的…

react合成事件与原生事件区别备忘

朋友问起在做一个下拉框组件&#xff0c;下拉的点击事件是用react的onClick触发&#xff0c;外部区域点击关闭则用dom的原生点击事件绑定&#xff0c;问题是下拉的点击事件无法阻止冒泡到dom的原生事件。 我说&#xff0c;react的合成事件 和 原生事件是不一样的&#xff0c;尽…

SkyWalking 为所有的API接口增加 tag

背景胡扯 线上接口报错&#xff0c;接着被 SkyWalking 抓到&#xff0c;然后 SkyWalking 触发告警&#xff0c;最后老板你&#xff0c;让你辛苦一下&#xff0c;在明早上班前把这个bug 改了&#xff0c;并告诉你你是全公司的希望。谁说不是呢&#xff1f;为公司业务保驾护航&a…

使用Google reCAPTCHA防止机器注册

本文作者&#xff1a;陈进坚 博客地址&#xff1a;https://jian1098.github.io CSDN博客&#xff1a;https://blog.csdn.net/c_jian 简书&#xff1a;https://www.jianshu.com/u/8ba9ac5706b6 联系方式&#xff1a;jian1098qq.com 环境要求 能翻墙的电脑域名 验证原理 在谷歌…

xhci 数据结构

xhci 数据结构 xhci 数据结构主要在手册上有详细的定义&#xff0c;本文根据手册进行归纳总结&#xff1a; 重点关注的包括&#xff1a; device contexttrb ringtrb device context设备上下文 设备上下文数据结构由xHC管理&#xff0c;用于向系统软件报告设备配置和状态信息。…

URL的绝对路径/相对路

一、URL 浏览器要想发起请求,必须是一个完整的url地址. URL是一个固定格式的字符串 它表达了&#xff1a; 从网络中 哪台计算机&#xff08;domain&#xff09; 中的 哪个程序&#xff08;port&#xff09; 寻找 哪个服务&#xff08;path&#xff09;&#xff0c;并注明了…

Python(九十四)变量的作用域

❤️ 专栏简介&#xff1a;本专栏记录了我个人从零开始学习Python编程的过程。在这个专栏中&#xff0c;我将分享我在学习Python的过程中的学习笔记、学习路线以及各个知识点。 ☀️ 专栏适用人群 &#xff1a;本专栏适用于希望学习Python编程的初学者和有一定编程基础的人。无…

CTFHUB-技能树-Web前置技能-文件上传(前端验证—文件头检查)

CTFHUB-技能树-Web前置技能-文件上传&#xff08;前端验证—文件头检查&#xff09; 文章目录 CTFHUB-技能树-Web前置技能-文件上传&#xff08;前端验证—文件头检查&#xff09;前端验证—文件头检查题目解析 各种文件头标志 前端验证—文件头检查 题目考的是&#xff1a;pn…