|
如 此), 所 以 对 于||, 空 值 等 价 于 零 个 字 符 值。 例: SQL >select ename,mgr,ename||mgr,sal,comm,sal+comm from emp;
ENAME MGR ENAME||MGR SAL COMM SAL+COMM
---------- --------- ------------- --------- --------- ---------
SMITH 7902 SMITH7902 800
ALLEN 7698 ALLEN7698 1600 300 1900
WARD 7698 WARD7698 1250 500 1750
JONES 7839 JONES7839 2975
MARTIN 7698 MARTIN7698 1250 1400 2650
BLAKE 7839 BLAKE7839 2850
CLARK 7839 CLARK7839 2450
SCOTT 7566 SCOTT7566 3000
KING KING 5000
TURNER 7698 TURNER7698 1500 0 1500
ADAMS 7788 ADAMS7788 1100
JAMES 7698 JAMES7698 950
FORD 7566 FORD7566 3000
MILLER 7782 MILLER7782 1300
---- 我 们 可 以 看 到, 凡mgr 为 空 值 的,ename||mgr 结 果 等 于ename; 凡 是comm 为 空 值 的 行,sal+comm 均 为 空 值。
---- 四、 空 值 和 函 数
---- 1 . 空 值 和 度 量 函 数
---- 对 于 度 量 函 数, 如 果 给 定 的 参 数 为 空 值, 则 其(NVL、TRANSLATE 除 外) 返 回 值 为 空 值。 如 下 例 中 的ABS(COMM), 如 果COMM 为 空 值,ABS(COMM) 为 空 值。 SQL > select ename,sal,comm,abs(comm) from emp where sal< 1500;
ENAME SAL COMM ABS(COMM)
---------- --------- --------- ---------
SMITH 800
WARD 1250 500 500
MARTIN 1250 1400 1400
ADAMS 1100
JAMES 950
MILLER 1300
---- 2. 空 值 和 组 函 数
---- 组 函 数 忽 略 空 值。 在 实 际 应 用 中, 根 据 需 要 可 利 用nvl 函 数 用 零 代 替 空 值。 例: SQL >select count(comm),sum(comm),avg(comm) from emp;
COUNT(COMM) SUM(COMM) AVG(COMM)
----------- --------- ---------
4 2200 550
SQL >select count(nvl(comm,0)),sum(nvl(comm,0)),avg(nvl(comm,0))
from emp;
COUNT(NVL(COMM,0)) SUM(NVL(COMM,0)) AVG(NVL(COMM,0))
------------------ ---------------- ----------------
14 2200 157.14286
---- 第 一 个SELECT 语 句 忽 略COMM 为 空 值 的 行, 第 二 个SELECT 语 句 使 用NVL 函 数 统 计 了 所 有 的COMM, 所 以 它 们 统 计 的 个 数、 平 均 值 都 不 相 同。 另 外 需 要 注 意 的 是, 在 利 用 组 函 数 进 行 数 据 处 理 时, 不 同 的 写 法 具 有 不 同 的 不 同 含 义, 在 实 际 应 用 中 应 灵 活 掌 握。 例 如: SQL >select deptno,sum(sal),sum(comm),
sum(sal+comm),sum(sal)+sum(comm),sum(nvl(sal,0)+nvl(comm,0))
from emp
group by deptno;
DEPTNO SUM(SAL) SUM(COMM) SUM(SAL+COMM) SUM(SAL)
+SUM(COMM) SUM(NVL(SAL,0)+NVL(COMM,0))
--------- --------- --------- ------------- -------
10 8750 8750
20 10875 10875
30 9400 2200 7800 11600 11600
---- 可 以 看 到SUM(SAL+COMM)、SUM(SAL)+SUM(COMM)、 SUM(NVL(SAL,0)+NVL(COMM,0)) 的 区 别:SUM(SAL+COMM) 为 先 加 然 后 计 算 各 行 的 和, 如 果SAL、COMM 中 有 一 个 为NULL, 则 该 行 忽 略 不 计;SUM(SAL)+SUM(COMM) 为 先 计 算 各 行 的 合 计 然 后 再 加,SAL、COMM 中 的NULL 都 忽 略 不 计, 但 如 果 SUM(SAL)、SUM(COMM) 二 者 的 结 果 之 中 有 一 个 为NULL, 则 二 者 之 和 为NULL; 在SUM(NVL(SAL,0)+NVL(COMM,0)) 里,SAL、COMM 中 的NULL 按0 处 理。
---- 五、 空 值 的 其 它 特 性
---- 1. 空 值 在 排 序 时 大 于 任 何 值。 例 如: SQL > select ename,comm from emp where deptno=''''30'''' order by comm;
ENAME COMM
---------- ---------
TURNER 0
ALLEN 300
WARD 500
MARTIN 1400
BLAKE
JAMES
---- 2. 空 值 不 能 被 索 引。 虽 然 在 某 列 上 建 立 了 索 引, 但 是 对 该 列 的 空 值 查 询 来 说, 因 为 空 值 没 有 被 索 引, 所 以 不 能 改 善 查 询 的 效 率。 例 如 下 面 的 查 询 不 能 利 用 在MGR 列 上 创 建 的 索 引。 SQL >select ename from emp where mgr is null;
ENAME
----------
KING
---- 另 外 正 是 因 为 空 值 不 被 索 引, 所 以 可 在 含 有 空 值 的 列 上 建 立 唯 一 性 索 引(UNIQUE INDEX)。 例 如, 可 以 在EMP 表 的COMM 列 上 建 立 唯 一 性 索 引: SQL > create unique index emp_comm on emp(comm);
Index created.
上一页 [1] [2] [系统软件]如何让 DevExpress 的 DateEdit 控件正确显示日期… [常用软件]WinImage的 新功能 [常用软件]Winamp5 Alpha版最新试用 中 [VB.NET程序]在VB.NET里操作文本文件 选择自 bpfish 的 Bl… [VB.NET程序]远 程 数 据 库 的 访 问 [VB.NET程序]获 得 位 图 文 件 的 信 息 [VB.NET程序]在 VB 中 引 用 .dbf 及 索 引 文 件 [VB.NET程序]VB + API 获取 IE 的 代理服务器 配制 [Delphi程序]一 个 实 用 的Delphi 屏 幕 拷 贝 程 序 的 设 [Delphi程序]在DELPHI 文 本 和 图 形 的 打 印
|