2022.6.23上午 Q AND A

以下所有内容仅供个人记录,可能会有错误,恳请指正。

1.case when作为 很熟悉的一种类型判断语句

在orcale中的格式之一为:

case  when condition1/expr1成立 then result1

when condition2/expr2成立 then result2

when condition3/expr3成立 then result3

.......

else default result(这里要注意 所有的result的数据类型都要相同,否则报错)

end

这只是 case when的格式,具体与查询语句连接的格式如下:

select table_cloumn/table* case ... end as(建议取别名) cloumn_newname from table_name where condition group by cloumn_name order by ;

2.关于日期转换问题

查询入职时间在1980年或1981年的员工信息

SELECT * FROM EMP WHERE '1980'=TO_CHAR(HIREDATE,'YYYY') OR '1981'=TO_CHAR(HIREATE,'YYYY');

TO_CHAR 中左边是字符串,右边也是字符串,左边是已有的字符串,肯定要加引号

左边是日期,如果右边一开始就加引号,那还要他转什么char?

而且tochar不会增加默认值,不需要补齐mm/dd

就算他有默认你也不能输入,因为前后参数要求一致,前面只有年后面就只写yyyy

查询入职时间在1980年1月1日到1981年12月31日之间的员工信息
SELECT * FROM EMP WHERE HIREDATE BETWEEN TO_DATE('1980','YYYY') AND TO_DATE('1981','YYYY');

同理左边是日期,右边肯定加引号,因为就是把字符串转日期,前后参数要求一致,前面只有年后面就只写yyyy

这里涉及到了两个方法 TO_CAHR和TO_DATE

TO_CHAR 是将日期转成字符

TO_DATE 是将字符转成日期

两者的作用,都可以使用等式匹配数值进行查询操作

需要注意的是 当to_date的格式不满足‘yyyy/mm/dd’时 会设置默认值的月和日,而to_char不会:

select to_date('1980','yyyy') from emp;

select to_char(hiredate,'yyyy') from emp;

这时我们看向第一题,如果使用to_date则会运行不出结果,原因是在判断=时,你以为只匹配年,实际该方法设置了默认值,所以导致没有结果。

而to_char则没有默认值,所以这时要使用to_char进行判断。

3.查询姓名中只有一个A字母的员工
select * from emp where ename like '%A%' and ename not like '%A%A%';

like的局限性,如果多一个A就要多加一次 not like 的判断,没有普适性。

4.查出10号部门的办事员(CLERK)和30号部门的经理(MANAGER)

常规的方法是利用逻辑运算符的判断顺序进行判断。

事实上也可以使用IN进行查询,但是需要用到整体思想。

select * from emp where (deptno,job) in ((10,'CLERK'),(30,'MANAGER'));  即可

5.escape 与 通配符

%\%%  escape\  :转义%。

%\_%  escape\:转义_。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值