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

发布时间:2024年01月20日

目录

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)

?

文章来源:https://blog.csdn.net/weixin_67859959/article/details/135721257
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。