范围运算between...and和空判断

本文详细介绍了Oracle数据库中BETWEEN...AND运算符的使用方法,包括范围查询、日期和字符串字段的比较,以及如何处理空值(NULL)和非空值的判断。同时提到了NULL在SQL中的特殊性及与关系运算的交互。
摘要由CSDN通过智能技术生成

目录

between...and

空判断


Oracle从入门到总裁:https://blog.csdn.net/weixin_67859959/article/details/135209645

between...and

between...and的主要功能是用户进行范围查询,语法如下:

select 字段 | 数值 between 最小值 and 最大值;

1.查询工资在 1500 ~ 3000 的所有员工信息

如果使用前面介绍的关系运算和逻辑运算,那么代码如下

现在来看一下使用 BETWEEN...AND 查询,代码如下

SQL> select *
  2  from emp
  3  where sal between 1500 and 3000;

     EMPNO ENAME                JOB                       MGR HIREDATE              SAL       COMM     DEPTNO
---------- -------------------- ------------------ ---------- -------------- ---------- ---------- ----------
      7499 ALLEN                SALESMAN                 7698 20-2月 -81           1600        300         30
      7566 JONES                MANAGER                  7839 02-4月 -81           2975                    20
      7698 BLAKE                MANAGER                  7839 01-5月 -81           2850                    30
      7782 CLARK                MANAGER                  7839 09-6月 -81           2450                    10
      7844 TURNER               SALESMAN                 7698 08-9月 -81           1500          0         30
      7902 FORD                 ANALYST                  7566 03-12月-81           3000                    20

已选择 6 行。

可以看到两者达到了相同的效果

关系与逻辑的组合属于两个运算符,而 BETWEEN...AND 是一个运算符,自然效率会更高

Oracle 中的所有运算符都不受数据类型的控制,在之前使用数字进行判断。除了数字之外,也可以 使用字符串或者日期进行判断。下面来看一下使用这个运算符进行日期判断

2.查询所有在 1981 年雇佣的员工信息

范围: 1981-01-01('01-1 月 -81') ~ 1981-12-31('31-12 月 -1981') 。这个时候可以按照已 有的数据结构通过字符串来描述日期

SQL> select *
  2  from emp
  3  where hiredate between '01-1月-81' and '31-12月-1981';

     EMPNO ENAME                JOB                       MGR HIREDATE              SAL       COMM     DEPTNO
---------- -------------------- ------------------ ---------- -------------- ---------- ---------- ----------
      7499 ALLEN                SALESMAN                 7698 20-2月 -81           1600        300         30
      7521 WARD                 SALESMAN                 7698 22-2月 -81           1250        500         30
      7566 JONES                MANAGER                  7839 02-4月 -81           2975                    20
      7654 MARTIN               SALESMAN                 7698 28-9月 -81           1250       1400         30
      7698 BLAKE                MANAGER                  7839 01-5月 -81           2850                    30
      7782 CLARK                MANAGER                  7839 09-6月 -81           2450                    10
      7839 KING                 PRESIDENT                     17-11月-81           5000                    10
      7844 TURNER               SALESMAN                 7698 08-9月 -81           1500          0         30
      7900 JAMES                CLERK                    7698 03-12月-81            950                    30
      7902 FORD                 ANALYST                  7566 03-12月-81           3000                    20

已选择 10 行。

3.查询字符串字段姓名在 ALLEN 和 CLARK 之间的内容

SQL> select *
  2  from emp
  3  where ename between 'ALLEN' and 'CLARK';

     EMPNO ENAME                JOB                       MGR HIREDATE              SAL       COMM     DEPTNO
---------- -------------------- ------------------ ---------- -------------- ---------- ---------- ----------
      7499 ALLEN                SALESMAN                 7698 20-2月 -81           1600        300         30
      7698 BLAKE                MANAGER                  7839 01-5月 -81           2850                    30
      7782 CLARK                MANAGER                  7839 09-6月 -81           2450                    10

空判断

从数据库定义上来说,nul 属于一个未知的数据。任何情况下,如果任何一个数字 与 nul 进行计算,那么结果还是 null

SELECT null + 1 FROM emp ;

在某些数据列上是允许存在 nul 值的,但是对于 nul 不能够使用关系运算判断。关系可以判断的 是数据,nul 不是空字符串也不是数字 0,所以在 SQL 之中只能够通过 IS NUL 来判断为空,以及 IS NOT NULL(NOT 字段 IS NULL)判断不为空

4.查询所有领取佣金的员工信息(com 字段表示的是佣金,如果领 取,com 的内容不是 null)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

橙子味冰可乐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值