当前位置: 首页 > news >正文

Oracle基础知识(四)

目录

1.DECODE

2.CASE  WHEN 

写法1:CASE WHEN deptno=值

写法2:CASE deptno WHEN 值

case结合between写法

3.拼接字符:||


1.DECODE

DECODE 局限:只能用等值判断

DECODE函数语法:

DECODE(判断的字段,判断值1,返回值1,判断值2,返回值2,...,默认值);

示例:EMP表需要将英文的工作转换成中文

     SALESMAN → 销售  MANAGER → 经理  PRESIDENT → 老板  其它的 → 职员

--DECODE写法
SELECT JOB, DECODE(JOB, 'SALESMAN', '销售', 'MANAGER', '经理', 'PRESIDENT', '老板', '职员') 中文
FROM EMP;

注意:最后的 ELSE 返回场景可以不写,默认返回为空 

2.CASE  WHEN 

CASE WHEN 条件1 THEN 返回值1WHEN 条件2 THEN 返回值2ELSE 默认值  ---默认值 可以写也可以不写END;

注意:CASE WHEN 可以用多条件 以及 不等值判断

case when支持不等式写法,decode不支持

示例:输出dept表的部门名称 10 → 销售部 20 → 经理部 30 → 市场部 40 → 运营部

写法1:CASE WHEN deptno=值

SELECT CASEWHEN DEPTNO = 10 THEN '销售部'WHEN DEPTNO = 20 THEN '经理部'WHEN DEPTNO = 30 THEN '市场部'WHEN DEPTNO = 40 THEN '运营部'END
FROM DEPT;

写法2:CASE deptno WHEN 值

SELECT CASE DEPTNOWHEN 10 THEN '销售部'WHEN 20 THEN '经理部'WHEN 30 THEN '市场部'END
FROM DEPT;

示例:给每个员工一个员工级别,薪资在1000以内是低级,[1000,2000]是中级,2000以上是高级

SELECT EMPNO,CASEWHEN SAL < 1000 THEN '低级'WHEN SAL BETWEEN 1000 AND 2000 THEN '中级'WHEN SAL > 2000 THEN '高级'END GRADE
FROM EMP;-- 计算薪资等级是低级的员工数
SELECT COUNT(CASE WHEN SAL < 1000 THEN 1 END)
FROM EMP;

case结合between写法

CASE WHEN END 最终是返回某个字段值,所有可以用字段的地方都可以使用CASE WHEN END

示例:统计薪资在1000~2000区间的人数 2001~3000的人数以及1000以下的人数,以及 3000 以上的人数

SELECT COUNT(CASE WHEN SAL BETWEEN 1000 AND 2000 THEN EMPNO END) "统计薪资在1000~2000区间的人",COUNT(CASE WHEN SAL BETWEEN 2001 AND 3000 THEN EMPNO END) "统计薪资在2001~3000区间的人",COUNT(CASE WHEN SAL < 1000 OR SAL > 3000 THEN EMPNO END)  "统计薪资在2001~3000区间的人"
FROM EMP;

计算每个部门中工资高于1500的人数占整个部门的人数比例

select deptno,round(count(casewhen sal > 1500 then1end) / count(1),4) * 100 || '%' as ctfrom empgroup by deptno; 

 

将 EMP表的 英文岗位 替换成中文岗位名称(两种方法实现)

select job,decode(job,'CLERK','职员','SALESMAN','销售员','PRESIDENT','老板','MANAGER','经理','ANALYST','分析师') as ch_jobfrom empgroup by job;select job,case jobwhen 'CLERK' then'职员'when 'SALESMAN' then'销售员'when 'PRESIDENT' then'老板'when 'MANAGER' then'经理'else'分析师'end as ch_jobfrom empgroup by job;

3.拼接字符:||

【例】在EMP表中,查询工资在2000元以上的姓名以及工作。预期效果:SCOTT is a ANALYST

SELECT (ENAME || ' is a ' || JOB) AS "Employee Details"
FROM EMP
WHERE SAL > 2000;

相关文章:

  • 力扣HOT100之回溯:46. 全排列
  • 大数据治理:理论、实践与未来展望(一)
  • ROS云课三分钟-破壁篇GCompris-一小部分支持Edu应用列表-2025
  • 第一课如何学习课程
  • Dify源码学习
  • csp备考Day1|string和vector
  • 几个MySQL系统调优工具
  • 03-工具篇-SSH远程登录ubuntu系统
  • Kubernetes in action-机理
  • 【Web前端】jQuery入门与基础(一)
  • ISO 26262-5 评估硬件随机失效率
  • Linux—进程池实现
  • C++题解(33)2025年顺德区中小学生程序设计展示活动(初中组C++)U560876 美丽数(一)和 U560878 美丽数(二)题解
  • Python之两个爬虫案例实战(澎湃新闻+网易每日简报):附源码+解释
  • 爬虫核心概念与工作原理详解
  • AI专题:如何把DeepSeek变成你的AI个人助手
  • 《2.2.1顺序表的定义|精讲篇》
  • 消息中间件之kafka
  • Linux-读者写著问题和读写锁
  • 香橙派3B学习笔记2:Vscode远程SSH登录香橙派_权限问题连接失败解决
  • 烟台制作网站的公司简介/seo上首页排名
  • 长春 餐饮 网站建设/市场营销实务
  • java开发网站跟php开发网站区别/上海牛巨仁seo
  • css网站图标/凡科建站模板
  • WordPress软件连接不了网站/广告营销策略有哪些
  • 南宁哪个公司做网站建设/网络推广优化平台