小 しょう 写 うつし 希 まれ 腊字母 はは 的 てき omega (ω おめが ) 字 じ 符 ふ 用 よう 来 らい 表示 ひょうじ 数 かず 据 すえ 库理论中 なか 的 てき Null。
空 そら 值 (英語 えいご :Null、NULL )是 これ 結構 けっこう 化 か 查詢語 ご 言 げん 中 ちゅう 使用 しよう 的 てき 特殊 とくしゅ 標記 ひょうき ,是 ぜ 關聯 かんれん 式 しき 資料 しりょう 庫 こ 中 ちゅう 对數據 よりどころ 属性 ぞくせい 未知 みち 或 ある 缺 かけ 失 しつ 的 てき 一 いち 种标识,用 よう 於指示 しじ 數 すう 據 よりどころ 庫 こ 中 ちゅう 不 ふ 存在 そんざい 數 すう 據 よりどころ 值。由 よし 關聯 かんれん 式 しき 資料 しりょう 庫 こ 模型 もけい 的 てき 創作 そうさく 者 しゃ E.F.科 か 德 とく 所 しょ 引入。SQL空 そら 值是用 よう 來 らい 滿足 まんぞく 真實 しんじつ 關係 かんけい 數 すう 據 よりどころ 庫 こ 管理 かんり 系統 けいとう (RDBMS)中 ちゅう ,支持 しじ “缺 かけ 失 しつ 資 し 訊與不 ふ 適用 てきよう 的 てき 資 し 訊”的 てき 需求。科 か 德 とく 還 かえ 介 かい 紹了在 ざい 數 すう 據 よりどころ 庫 こ 理論 りろん 中 ちゅう 使用 しよう 小 しょう 寫 うつし 的 てき 希 まれ 臘字母 はは (ω おめが )符號 ふごう 來 らい 表示 ひょうじ 空 そら 值。在 ざい SQL中 ちゅう 則 のり 是 ぜ 以 NULL 用 よう 於標識空值的保留 ほりゅう 關 せき 鍵 かぎ 字 じ 。SQL null是 ぜ 一 いち 個 こ 狀態 じょうたい ,而不是 ぜ 一 いち 個 こ 值。這種用法 ようほう 與 あずか 大 だい 多數 たすう 編 へん 程 ほど 語 ご 言 げん 完全 かんぜん 不同 ふどう ,其中參照 さんしょう 的 てき 空 そら 值意味 あじ 著 ちょ 不 ふ 指向 しこう 任 にん 何 なん 對象 たいしょう 。
這不應 おう 與 あずか 0 數 すう 值混淆 こんこう 。空 そら 值表示 ひょうじ 缺 かけ 少 しょう 值-而與零 れい 值不同 ふどう ,與 あずか 缺乏 けつぼう 答案 とうあん 的 てき 方式 ほうしき 不同 ふどう ,作為 さくい “否 いな ”的 てき 答案 とうあん 。例 れい 如“亞 あ 當 とう 擁 よう 有 ゆう 多少 たしょう 本書 ほんしょ ?”這個問題 もんだい ,答案 とうあん 可能 かのう 是 ぜ “零 れい ”(他 た 沒 ぼつ 有 ゆう )或 ある “空白 くうはく ”(不知 ふち 道 どう 他 た 擁 よう 有 ゆう 多少 たしょう )。在 ざい 數 すう 據 よりどころ 庫 こ 表 ひょう 格 かく 中 ちゅう ,回報 かいほう 此問題 もんだい 的 てき 列 れつ 結果 けっか ,將 はた 從 したがえ 沒 ぼつ 有 ゆう 值(標記 ひょうき 為 ため Null)開始 かいし ,並 なみ 且在我 わが 們確定 かくてい 亞 あ 當 とう 沒 ぼつ 有 ゆう 書籍 しょせき 之 の 前 まえ ,並 なみ 不 ふ 會 かい 更新 こうしん 為 ため 值“零 れい ”。
数 かず 据 すえ 库表主 しゅ 键的 てき 取 と 值不能 ふのう 为空 そら 值 。另外,数 すう 据 すえ 库中的 てき 统计 计算 ,一般将有空值的数据忽略不计。
作為 さくい 插入 そうにゅう 資料 しりょう 時 じ ,欄 らん 位 い 的 てき 預 あずか 設 しつらえ 值
查詢時 じ 的 てき 條件 じょうけん 式 しき
在 ざい SQL的 てき Where條件 じょうけん 式 しき 去 さ 判斷 はんだん id欄 らん 位 い 是 ぜ 否 ひ 為 ため Null時 じ ,像 ぞう 是 ぜ where id = null 是 ぜ 無法 むほう 正確 せいかく 執行 しっこう 的 てき ,必須 ひっす 寫 うつし 成 なり where id is null ;反 はん 之 の 若 わか 要 よう 判斷 はんだん 為 ため id欄 らん 位 い 是 ぜ 否 ひ 為 ため 非 ひ Null時 じ ,則 のり 用 よう where id is not null
查詢時 じ 的 てき 空 そら 值評估取代 だい (n為 ため 評 ひょう 估式或 ある 欄 らん 位 い 名稱 めいしょう ,e為當 ためとう n為 ため null時 じ 要 よう 回 かい 傳 でん 的 てき 內容)
被 ひ Oracle DB、Microsoft SQL Server、IBM DB2、Postgre SQL、MySQL等 とう 資料 しりょう 庫 こ 支援 しえん
被 ひ Microsoft SQL Server、Microsoft-Access等 とう 資料 しりょう 庫 こ 支援 しえん
被 ひ Oracle DB資料 しりょう 庫 こ 支援 しえん
被 ひ Microsoft-Access等 とう 資料 しりょう 庫 こ 支援 しえん
EF Codd 在 ざい 一 いち 篇 へん 1975年 ねん 的 てき ACM - SIGMOD FDT報告 ほうこく 的 てき 論文 ろんぶん 中 ちゅう 提 ひっさげ 到 いた 了 りょう 空 そら 值作為 さくい 表示 ひょうじ 關係 かんけい 模型 もけい 中 ちゅう 缺 かけ 失 しつ 數 すう 據 よりどころ 的 てき 一 いち 種 しゅ 方法 ほうほう 。Codd最 さい 常 つね 被 ひ 引用 いんよう 的 てき 與 あずか Null語義 ごぎ 相關 そうかん 的 てき 論文 ろんぶん (如 SQL中 ちゅう 所 しょ 採用 さいよう 的 てき )是 ぜ 他 た 1979年 ねん 在 ざい ACM Transactions on Database Systems上 じょう 發表 はっぴょう 的 てき 論文 ろんぶん ,其中他 た 還 かえ 介 かい 紹了他 た 的 てき Relational Model/Tasmania,儘管其他許多 きょた 提議 ていぎ 後 ご 面 めん 的 てき 文章 ぶんしょう 一 いち 直 ちょく 很模糊 もこ 。1979年 ねん 他 た 的 てき 論文 ろんぶん 2.3節 せつ 詳細 しょうさい 描述了 りょう 空 そら 值在做算術 じゅつ 運算 うんざん 時 じ 散 ち 播的語義 ごぎ ,以及比較 ひかく 空 そら 值時使用 しよう 三 さん 值(三 さん 元 げん )邏輯的 てき 比較 ひかく ;他 た 還 かえ 詳細 しょうさい 說明 せつめい 了 りょう 對 たい 其它集合 しゅうごう 操作 そうさ 的 てき 空 そら 值處理 しょり (後者 こうしゃ 目前 もくぜん 仍存在 そんざい 爭議 そうぎ )。在 ざい 數 すう 據 よりどころ 庫 こ 理論 りろん 界 かい ,Codd最初 さいしょ 的 てき 建議 けんぎ (1975,1979)現在 げんざい 被 ひ 稱 しょう 為 ため “Codd tables”。 Codd後來 こうらい 強化 きょうか 了 りょう 他 た 的 てき 要求 ようきゅう ,即 そく 在 ざい ComputerWorld 雜誌 ざっし 上 じょう 發表 はっぴょう 的 てき 一 いち 篇 へん 1985年 ねん 由 ゆかり 兩 りょう 部分 ぶぶん 組成 そせい 的 てき 文章 ぶんしょう 中 ちゅう ,所有 しょゆう RDBMS都 と 支持 しじ Null來 らい 表示 ひょうじ 缺 かけ 失 しつ 的 てき 數 すう 據 よりどころ 。
在 ざい IBM System R中 ちゅう 實現 じつげん 原型 げんけい 後 ご ,1986年 ねん 的 てき SQL標準 ひょうじゅん 基本 きほん 上 じょう 採用 さいよう 了 りょう Codd的 てき 建議 けんぎ 。雖然 Don Chamberlin認 みとめ 為 ため nulls(和 わ 重複 じゅうふく 行 ぎょう 一起 かずき )是 ぜ SQL最 さい 有 ゆう 爭議 そうぎ 的 てき 特性 とくせい 之 の 一 いち ,但 ただし 他 た 辯護 べんご SQL中 ちゅう 的 てき Nulls設計 せっけい ,並 なみ 提出 ていしゅつ 了 りょう 實用 じつよう 的 てき 觀點 かんてん ,認 みとめ 為 ため 這是系統 けいとう 對 たい 缺 かけ 少 しょう 資 し 訊支援 しえん 最 さい 方便 ほうべん 的 てき 形式 けいしき ,從 したがえ 而使程 ほど 序 じょ 員 いん 免 めん 受許多 た 重複 じゅうふく 的 てき 應用 おうよう 程 ほど 序 じょ 級 きゅう 別 べつ 檢 けん 查(請參閱semipredicate問題 もんだい ),同時 どうじ 也為數 すう 據 よりどころ 庫 こ 設計 せっけい 人員 じんいん 提供 ていきょう 了 りょう 不 ふ 願意 がんい 使用 しよう Null的 てき 選 せん 項 こう ; 例 れい 如,為 ため 了 りょう 避免眾所周知 しゅうち 的 てき 異常 いじょう (在 ざい 本文 ほんぶん 的 てき 語義 ごぎ 部分 ぶぶん 討論 とうろん )。Chamberlin還 かえ 認 みとめ 為 ため ,除 じょ 了 りょう 提供 ていきょう 一些缺失值功能之外,對 たい 於空值的實踐 じっせん 經驗 けいけん 也會導 しるべ 致依賴 いらい 於空值的其它語 ご 言 げん 特性 とくせい ,如某些分組 ぐみ 構造 こうぞう 和 わ 外 がい 連接 れんせつ 。最後 さいご ,他 た 認 みとめ 為 ため 在 ざい 實踐 じっせん 中 ちゅう ,Nulls最終 さいしゅう 也會被 ひ 用作 ようさく 快速 かいそく 修補 しゅうほ 現有 げんゆう 模 も 式 しき 的 てき 一 いち 種 しゅ 方法 ほうほう ,當 とう 它需要 じゅよう 超 ちょう 出 だし 其原 そのはら 始 はじめ 意圖 いと 的 てき 時候 じこう ,不 ふ 是 ぜ 為 ため 了 りょう 丟失而是為 ため 了 りょう 不 ふ 適用 てきよう 的 てき 數 すう 據 よりどころ 編 へん 碼; 例 れい 如,一個數據庫如果有每英里加侖的欄位,需要 じゅよう 快速 かいそく 新 しん 增 ぞう 值為電動 でんどう 汽車 きしゃ 時 じ 。
Codd在 ざい 其 1990年 ねん 出版 しゅっぱん 的 てき “數 すう 據 よりどころ 庫 こ 管理 かんり 關係 かんけい 模型 もけい 第 だい 2版 はん ”中指 なかゆび 出 で ,SQL標準 ひょうじゅん 所 しょ 要求 ようきゅう 的 てき 單一 たんいつ Null 類型 るいけい 是 ぜ 不 ふ 夠的,應 おう 該用兩 りょう 種 たね 不同 ふどう 的 てき Null 類型 るいけい 標記 ひょうき 來 らい 替 がえ 代 だい ,以表明 ひょうめい 數 すう 據 よりどころ 丟失的 てき 原因 げんいん 。在 ざい Codd的 てき 書中 しょちゅう ,這兩個 りゃんこ Null型 がた 標記 ひょうき 分別 ふんべつ 被 ひ 稱 しょう 為 ため “A值”和 かず “I值”,分別 ふんべつ 表示 ひょうじ “缺 かけ 失 しつ 但 ただし 適用 てきよう ”和 かず “缺 かけ 失 しつ 但 ただし 不 ふ 適用 てきよう ”。 Codd的 てき 建議 けんぎ 將 はた 要求 ようきゅう 擴展 SQL的 てき 邏輯系統 けいとう 以適應 おう 四 よん 值邏輯系統 けいとう 。由 よし 於這種 しゅ 額 がく 外的 がいてき 複雜 ふくざつ 性 せい ,具有 ぐゆう 不同 ふどう 定義 ていぎ 類型 るいけい 的 てき 多 た 個 こ 空 そら 值概念 がいねん ,尚 なお 未 み 在 ざい 數 すう 據 よりどころ 庫 こ 領域 りょういき 廣 こう 泛接受 せつじゅ 。儘管如此,它仍然 しか 是 ぜ 一 いち 個 こ 活躍 かつやく 的 てき 研究 けんきゅう 領域 りょういき ,許多 きょた 論文 ろんぶん 還 かえ 在 ざい 發表 はっぴょう 。
由 よし 於其相關 そうかん 的 てき 三 さん 值邏輯(3VL) ,它在 SQL連接 れんせつ 中 ちゅう 使用 しよう 的 てき 特殊 とくしゅ 要求 ようきゅう ,以及聚合函數 かんすう 和 わ SQL分 ぶん 組 ぐみ 操作 そうさ 符 ふ 所 しょ 需的特殊 とくしゅ 處理 しょり ,空 そら 值一直是爭議的焦點和爭議的來源。計算 けいさん 機 き 科學 かがく 教授 きょうじゅ Ron van der Meyden將 はた 各種 かくしゅ 問題 もんだい 總 そう 結 ゆい 為 ため :“SQL標準 ひょうじゅん 中 ちゅう 的 てき 不一致 ふいっち ,意味 いみ 著 ちょ 不可能 ふかのう 將 はた 任 にん 何 なん 直觀 ちょっかん 的 てき 邏輯語義 ごぎ 歸 き 於 SQL中 ちゅう 的 てき 空 そら 值處理 しょり ”。 儘管為 ため 解決 かいけつ 這些問題 もんだい 提出 ていしゅつ 了 りょう 各種 かくしゅ 建議 けんぎ ,但 ただし 候 こう 選 せん 方案 ほうあん 的 てき 複雜 ふくざつ 性 せい 阻礙了 りょう 它們的 てき 廣 こう 泛採用 さいよう 。
由 よし 於 Null不 ふ 是 ぜ 數 すう 據 よりどころ 值,而是缺 かけ 少 しょう 值的標記 ひょうき ,因 いん 此以數學 すうがく 運算 うんざん 符 ふ 使用 しよう Null會 かい 給 きゅう 出 で 未知 みち 結果 けっか 。
該結果 けっか 由 よし 空 そら 值表示 ひょうじ 。下 した 例 れい 中將 ちゅうじょう Null乘 じょう 以 10將 しょう 導 しるべ 致Null:
10 * NULL -- Result is NULL
這可能會 のうかい 有 ゆう 出 で 乎意料 りょう 的 てき 結果 けっか 。例 れい 如,當 とう 試 ためし 圖 ず 將 はた Null除 じょ 以零 れい 時 じ ,平台 ひらだい 可 か 返 かえし 回 かい Null值而不 ふ 會 かい 拋出預 あずか 期 き 的 てき “除 じょ 以零-數 すう 據 よりどころ 異常 いじょう ”。雖然這種行為 こうい 不 ふ 是 ぜ 由 よし ISO SQL標 しるべ 准 じゅん 定義 ていぎ 的 てき ,但 ただし 許多 きょた DBMS供應 きょうおう 商都 しょうと 以類似 るいじ 的 てき 方式 ほうしき 處理 しょり 這一操作 そうさ 。例 れい 如,Oracle,PostgreSQL,MySQL服務 ふくむ 器 き 和 わ Microsoft SQL Server平台 ひらだい 都會 とかい 針 はり 對 たい 以下 いか 內容返 かえし 回 かい 空 そら 值結果 けっか :
在 ざい SQL中 ちゅう 常見 つねみ 的 てき 字 じ 串 くし 連接 れんせつ 操作 そうさ ,在 ざい 其中一 いち 個 こ 操作 そうさ 元 もと 為 ため Null時 じ 也會導 しるべ 致 Null。下 した 例 れい 演 えんじ 示 しめせ 了 りょう 使用 しよう Null與 あずか SQL 字 じ 串 くし 連接 れんせつ 運算 うんざん 符 ふ || 返 かえし 回 かい 的 てき Null結果 けっか :
'Fish ' || NULL || 'Chips' -- Result is NULL
對 たい 於數據 よりどころ 庫 こ 實 み 作 さく 來 らい 說 せつ 並 なみ 非 ひ 都 と 是 ぜ 如此。在 ざい Oracle RDBMS中 ちゅう ,例 れい 如 NULL和 わ 空 そら 字 じ 符 ふ 串 くし 被 ひ 認 みとめ 為 ため 是 ぜ 相 しょう 同 どう 的 てき ,因 いん 此'Fish'|| NULL || '晶 あきら 片 へん '
字 じ 串 くし 連接 れんせつ 的 てき 結果 けっか 是 ぜ 'Fish晶 あきら 片 へん '。
由 よし 於 Null不 ふ 是 ぜ 任 にん 何 なん 數 すう 據 よりどころ 域 いき 的 てき 成員 せいいん ,因 いん 此它不 ふ 被 ひ 視 し 為 ため “值”,而是指 ゆび 缺 かけ 失 しつ 值的標記 ひょうき (或 ある 佔位符 ふ )。因 よし 此與 Null進行 しんこう 比較 ひかく 永遠 えいえん 不 ふ 會 かい 導 しるべ 致 True或 ある False,而總變成 へんせい 在 ざい 三 さん 值邏輯的 Unknown 結果 けっか 中 ちゅう 。下面 かめん 表 ひょう 達 たち 式 しき 的 てき 邏輯結果 けっか 是 これ 將 はた 值 10 與 あずか Null進行 しんこう 比較 ひかく ,得 とく 到 いた 的 てき 結果 けっか 會 かい 成 なり 為 ため 未知 みち :
SELECT 10 = NULL -- Results in Unknown
但 ただし 是 ぜ ,如果缺 かけ 失 しつ 值與操作 そうさ 結果 けっか 無關 むせき ,則 のり 對 たい Null的 てき 某 ぼう 些操作 そうさ 可 か 以返回 かい 值。考慮 こうりょ 下面 かめん 的 てき 例 れい 子 こ :
SELECT NULL OR TRUE -- Results in True
在 ざい 這種情況 じょうきょう 下 か ,OR 左邊 さへん 的 てき 未知 みち 值這一事實是無關緊要的,因 いん 為 ため OR 的 てき 操作 そうさ 結果 けっか 將 はた 是 ぜ True,而不管 かん 左邊 さへん 的 てき 值如何 なに 。
SQL實現 じつげん 了 りょう 三 さん 值邏輯,因 いん 此 SQL的 てき 實 み 作 さく 必須 ひっす 提供 ていきょう 專門 せんもん 的 てき 三 さん 值邏輯(3VL)。SQL三值邏輯的規則如下表所示(
p
{\displaystyle p}
和 わ
q
{\displaystyle q}
表示 ひょうじ 邏輯狀態 じょうたい )“ SQL使用 しよう AND,OR和 わ NOT 的 てき 真 ま 值表,對應 たいおう 於 Kleene和 わ Łukasiewicz三值邏輯的常見片段,有價 ゆうか 值的邏輯(它們的 てき 含義定義 ていぎ 不同 ふどう ,但 ただし SQL沒 ぼつ 有 ゆう 定義 ていぎ 這樣的 てき 操作 そうさ )
p
q
p OR q
p AND q
p = q
True
True
True
True
True
True
False
True
False
False
True
未知 みち
True
未知 みち
未知 みち
False
True
True
False
False
False
False
False
False
True
False
未知 みち
未知 みち
False
未知 みち
未知 みち
True
True
未知 みち
未知 みち
未知 みち
False
未知 みち
False
未知 みち
未知 みち
未知 みち
未知 みち
未知 みち
未知 みち
p
NOT p
True
False
False
True
未知 みち
未知 みち
WHERE子 こ 句 く 中 ちゅう 的 てき 未知 みち 效 こう 應 おう [ 编辑 ]
在 ざい 數 すう 據 よりどころ 操縱 そうじゅう 語 ご 言 げん (DML)和 かず 查詢的 てき 比較 ひかく 謂 いい 詞 し 中 ちゅう ,若 わか 遇 ぐう 到 いた SQL三 さん 值邏輯,該 WHERE子 こ 句會 くかい 導 しるべ 致 DML語句 ごく 僅對那 な 些謂詞 し 評 ひょう 估為 True的 てき 列 れつ 結果 けっか 起 おこり 作用 さよう ;若 わか 是 ぜ INSERT,UPDATE 或 ある 者 もの DELETE 等 とう DML語句 ごく ,則 のり 因 いん 為 ため 此謂詞 し 計算 けいさん 的 てき 結果 けっか 為 ため 假 かり 、或 ある 是 ぜ 未知 みち 列 れつ ,不 ふ 會 かい 執行 しっこう ,並 なみ 放棄 ほうき SELECT查詢。將 はた Unknown 解釋 かいしゃく 成 なり False 相 しょう 同 どう 的 てき 邏輯結果 けっか ,是 ぜ 處理 しょり 空 そら 值時會 かい 遇 ぐう 到 いた 的 てき 常見 つねみ 錯誤 さくご ,下面 かめん 的 てき 簡單 かんたん 例 れい 子 こ 說明 せつめい 了 りょう 這個謬誤:
SELECT *
FROM t
WHERE i = NULL ;
上 うえ 例 れい 的 てき 查詢邏輯一定 いってい 返 かえし 回 かい 零 れい 列 れつ ,因 いん 為 ため i 欄 らん 位 い 與 あずか Null 比較的 ひかくてき 結果 けっか 一定 いってい 是 ぜ 傳 でん 回 かい “未知 みち ”,即 そく 使 つかい 對 たい 於那些 i 為 ため Null 的 てき 資料 しりょう 列 れつ 也是如此。未知 みち 結果 けっか 導 しるべ 致 SELECT語句 ごく 立 りつ 即 そく 丟棄每 ごと 一 いち 列 れつ 。(但 ただし 在 ざい 實 じつ 作中 さくちゅう ,一 いち 些 SQL工具 こうぐ 將 しょう 使用 しよう 與 あずか Null的 てき 比較 ひかく 來 らい 檢索 けんさく 列 れつ 。)
空 そら 值指定 してい 和 わ 3VL特定 とくてい 比較 ひかく 謂 いい 詞 し [ 编辑 ]
基本 きほん SQL比較 ひかく 運算 うんざん 符 ふ 在 ざい 與 あずか Null進行 しんこう 比較 ひかく 時 じ ,始終 しじゅう 返 かえし 回 かい “未知 みち ”,因 いん 此 SQL標準 ひょうじゅん 提供 ていきょう 了 りょう 兩個 りゃんこ 特定 とくてい 的 てき Null 比較 ひかく 謂 いい 詞 し : IS NULL
和 わ IS NOT NULL
(使用 しよう 後 ご 綴 つづり 語法 ごほう ),來 らい 檢 けん 測 はか 數 かず 據 よりどころ 是 ぜ 不 ふ 是 ぜ 空 そら 值。
SQL標準 ひょうじゅん 包含 ほうがん 一 いち 個 こ 擴展 F571“真 ま 值測試 ためし ”,它引入 にゅう 了 りょう 三個額外的邏輯一元運算符(實際 じっさい 上 じょう ,如果我 わが 們計算 けいさん 它們的 てき 否定 ひてい ,它們是 ぜ 其語法的 ほうてき 一 いち 部分 ぶぶん ),也使用 しよう 了 りょう 後 ご 綴 つづり 表示法 ひょうじほう 。他 た 們有以下 いか 真 ま 值表:
p
true
false
unknown
p IS TRUE
true
false
false
p IS NOT TRUE
false
true
true
p IS FALSE
false
true
false
p IS NOT FALSE
true
false
true
p IS UNKNOWN
false
false
true
p IS NOT UNKNOWN
true
true
false
F571擴展與 あずか SQL中 ちゅう 布 ぬの 林 りん 數 すう 據 よりどころ 類型 るいけい 的 てき 存在 そんざい 正 せい 交(本文 ほんぶん 稍 やや 後 こう 討論 とうろん ),儘管語法 ごほう 相似 そうじ ,但 ただし F571不 ふ 會 かい 在 ざい 語 かたり 言 ごと 中 ちゅう 引入布 ぬの 林 りん 值或三 さん 值文字 もじ 。1999年 ねん ,在 ざい 布 ぬの 林 りん 型 がた 數 すう 據 よりどころ 類型 るいけい 被 ひ 引入標準 ひょうじゅん 之 の 前 まえ ,F571擴展實際 じっさい 上 じょう 存在 そんざい 於 SQL92中 ちゅう 。然 しか 而,F571擴展只 ただ 有 ゆう 少數 しょうすう 系統 けいとう 實 み 作 さく ;PostgreSQL是 ぜ 實 み 作 さく 它的數 すう 據 よりどころ 庫 こ 之 の 一 いち 。
加入 かにゅう 三值邏輯中的其它運算符使 SQL 的 てき 三值邏輯功用完善,這意味 あじ 著 ちょ 它的邏輯運算 うんざん 符 ふ 可 か 以表示 ひょうじ (以組合 くみあい )任 にん 何 なん 可能 かのう 的 てき 三 さん 值邏輯函數 すう 。
在 ざい 不 ふ 支持 しじ F571擴展的 てき 系統 けいとう 上 じょう 可 か 以遍歷 へんれき 每 ごと 種 しゅ 可能 かのう 組合 くみあい ,使 つかい 表 ひょう 達 たち 式 しき p Unknown的 てき 參 さん 數 すう 來 らい 模擬 もぎ IS UNKNOWN p,並 なみ 使用 しよう IS NULL或 ある 其他 NULL特定 とくてい 函數 かんすう 來 らい 測 はか 試 ためし 這些參 さん 數 すう ,雖然這樣子 こ 可能 かのう 更 さら 繁 しげる 瑣。
WHERE子 こ 句 く 的 てき 排中律 はいちゅうりつ [ 编辑 ]
空 そら 值在其它構造 こうぞう 式 しき 中 ちゅう 的 てき 影響 えいきょう [ 编辑 ]
SQL提供 ていきょう 了 りょう 兩 りょう 種 たね 風格 ふうかく 的 てき 條件 じょうけん 表 ひょう 達 たち 式 しき 。一 いち 為 ため “簡單 かんたん CASE”並 なみ 像 ぞう switch 語句 ごく 一 いち 樣 よう 操作 そうさ 。另一在 ざい 標準 ひょうじゅん 中稱 ちゅうしょう 為 ため “搜索 そうさく CASE”,並 なみ 像 ぞう if ... elseif一 いち 樣 よう 運行 うんこう 。
簡單 かんたん CASE
表 ひょう 達 たち 式 しき 使用 しよう 隱 かくれ 式 しき 相等 そうとう 比較 ひかく ,它們的 てき 執行 しっこう 和 わ DML的 てき WHERE
子 こ 句 く 處理 しょり Null 的 てき 規則 きそく 是 ぜ 相 しょう 同 どう 的 てき 。因 よし 此,一 いち 個 こ 簡單 かんたん CASE
表 ひょう 達 たち 式 しき 無法 むほう 直接 ちょくせつ 檢 けん 查 Null 的 てき 存在 そんざい 。在 ざい 簡單 かんたん CASE
表 ひょう 達 たち 式 しき 中 ちゅう 檢 けん 查 Null 總會 そうかい 導 しるべ 致結果 けっか 為 ため 未知 みち ,如下所 しょ 示 しめせ :
SELECT CASE i WHEN NULL THEN 'Is Null' -- This will never be returned
WHEN 0 THEN 'Is Zero' -- This will be returned when i = 0
WHEN 1 THEN 'Is One' -- This will be returned when i = 1
END
FROM t ;
不 ふ 管 かん i 列 れつ 所 しょ 包含 ほうがん 的 てき 的 てき 值是什麼 いんも (即 そく 使 つかい 它包含 ほうがん Null),該表達 たち 式 しき 的 てき 計算 けいさん 結果 けっか 都 と 為 ため “未知 みち ” ,'Is Null'
字 じ 串 くし 將 はた 永遠 えいえん 不 ふ 會 かい 返 かえし 回 かい 。
另一方面 ほうめん ,“搜索 そうさく ” CASE
表 ひょう 達 たち 式 しき 可 か 以使用 しよう 謂 いい 詞 し IS NULL
和 わ IS NOT NULL
條件 じょうけん 。下 した 例 れい 顯示 けんじ 如何 いか 使用 しよう 搜索 そうさく CASE
表 ひょう 達 たち 式 しき 來 らい 正確 せいかく 檢 けん 查 Null:
SELECT CASE WHEN i IS NULL THEN 'Null Result' -- This will be returned when i is NULL
WHEN i = 0 THEN 'Zero' -- This will be returned when i = 0
WHEN i = 1 THEN 'One' -- This will be returned when i = 1
END
FROM t ;
Oracle的 てき SQL 方言 ほうげん 提供 ていきょう 了 りょう 一 いち 個 こ 內置函數 かんすう DECODE
,可 か 以用它來代替 だいたい 簡單 かんたん 的 てき CASE表 ひょう 達 たち 式 しき ,並 なみ 考慮 こうりょ 兩個 りゃんこ 相等 そうとう 的 てき 空 そら 值。
SELECT DECODE ( i , NULL , 'Null Result' , 0 , 'Zero' , 1 , 'One' ) FROM t ;
如果最後 さいご 都 と 沒 ぼつ 有 ゆう 與 あずか 條件 じょうけん 相 しょう 匹 ひき 配 はい 的 てき 結果 けっか ,所有 しょゆう 這些結構 けっこう 將 しょう 會 かい 返 かえし 回 かい NULL;它們有 ゆう 一 いち 個 こ 預 あずか 設 しつらえ 的 てき ELSE NULL
子 こ 句 く 。
程 ほど 序 じょ 擴展中 ちゅう 的 てき IF語句 ごく [ 编辑 ]
SQL/PSM(SQL預 あずか 存 そん 持續 じぞく 模 も 組 ぐみ )定義 ていぎ SQL的 てき 預 あずか 存 そん 程 ほど 序 じょ 擴展,例 れい 如 IF 語句 ごく 。但 ただし 歷史 れきし 上 じょう 主要 しゅよう 的 てき SQL供應 きょうおう 商都 しょうと 包含 ほうがん 了 りょう 他 た 們自己 じこ 專有 せんゆう 的 てき 程 ほど 序 じょ 擴展。循環 じゅんかん 和 わ 比較的 ひかくてき 程 ほど 序 じょ 擴展在 ざい 空 そら 值比較 ひかく 規則 きそく 下 か 運行 うんこう ,類似 るいじ 於 DML 語句 ごく 和 わ 查詢。以下 いか 預 あずか 存 そん 程 ほど 序 じょ 的 てき 片 かた 段 だん 以 ISO SQL 標準 ひょうじゅん 格式 かくしき 演 えんじ 示 しめせ 了 りょう 在 ざい IF 語句 ごく 中 ちゅう 使用 しよう 3VL的 てき Null 。
IF i = NULL THEN
SELECT 'Result is True'
ELSEIF NOT ( i = NULL ) THEN
SELECT 'Result is False'
ELSE
SELECT 'Result is Unknown' ;
該IF語句 ごく 僅對那 な 些評估為 True 的 てき 比較 ひかく 執行 しっこう 操作 そうさ 。對 たい 於評估為 False 或 ある 未 み 知的 ちてき IF 語句 ごく ,該語句 く 將 はた 控 ひかえ 制 せい 傳 でん 遞給 ELSEIF 子 こ 句 く ,最後 さいご 傳 でん 遞給 ELSE 子 こ 句 く 。上面 うわつら 代 だい 碼將因 いん 與 あずか Null 的 てき 比較 ひかく 始終 しじゅう 評 ひょう 估為未知 みち ,結果 けっか 一定 いってい 會 かい 是 ぜ 'Result is Unknown'
。
選擇 せんたく 和 わ 預 あずか 測 はか :代表 だいひょう 性 せい 弱 じゃく [ 编辑 ]
如果考慮 こうりょ 連接 れんせつ 或 ある 聯合 れんごう :甚至不 ふ 表示 ひょうじ 弱 じゃく [ 编辑 ]
SQL 的 てき 外 そと 連接 れんせつ 、左 ひだり 外 がい 連接 れんせつ 和 わ 右 みぎ 外 がい 連接 れんせつ ,會 かい 自動 じどう 生成 せいせい 空 そら 值以作為 さくい 結果 けっか 表 ひょう 中 ちゅう 缺 かけ 失 しつ 值的佔位符 ふ 。如對於左外 がい 連接 れんせつ 會 かい 產 さん 生 せい 空 そら 值,代替 だいたい 左 ひだり 外 がい 連接 れんせつ 操作 そうさ 後 ご ,右側 みぎがわ 表 ひょう 中 ちゅう 欄 らん 位 い 缺 かけ 少 しょう 值的列 れつ 。下 した 例 れい 使用 しよう 兩個 りゃんこ 表 ひょう 來示 らいじ 範 はん 左 ひだり 外 がい 連接 れんせつ 操作 そうさ 產 さん 生 せい 的 てき 空 そら 值佔位 い 符 ふ 。第 だい 一 いち 個 こ 表 ひょう (Employee)包含 ほうがん 員 いん 工 こう 編 へん 號 ごう 和 わ 姓名 せいめい ,而第二 に 個 こ 表 ひょう (PhoneNumber)包含 ほうがん 相關 そうかん 的 てき 員 いん 工 こう 編 へん 號 ごう 和 わ 電話 でんわ 號 ごう 碼,如下。
Employee
ID
LastName
FirstName
1
Johnson
Joe
2
Lewis
Larry
3
Thompson
Thomas
4
Patterson
Patricia
PhoneNumber
ID
Number
1
555-2323
3
555-9876
以下 いか 示 しめせ 例 れい SQL查詢對 たい 這兩個 りゃんこ 表 ひょう 執行 しっこう 左 ひだり 外 がい 連接 れんせつ 。
SELECT e . ID , e . LastName , e . FirstName , pn . Number
FROM Employee e
LEFT OUTER JOIN PhoneNumber pn
ON e . ID = pn . ID ;
此查詢生成 せいせい 的 てき 結果 けっか 集 しゅう 演 えんじ 示 しめせ SQL如何 いか 使用 しよう Null作為 さくい 右側 みぎがわ (PhoneNumber)表 ひょう 中 ちゅう 缺 かけ 少 しょう 的 てき 值的佔位符 ふ ,如下所 しょ 示 しめせ 。
Query result
ID
LastName
FirstName
Number
1
Johnson
Joe
555-2323
2
Lewis
Larry
NULL
3
Thompson
Thomas
555-9876
4
Patterson
Patricia
NULL
SQL定義 ていぎ 了 りょう 聚合函數 かんすう 以簡化 か 伺服器 き 端 はし 的 てき 數 すう 據 よりどころ 聚合計算 けいさん 。除 じょ COUNT(*)
函數 かんすう 外 がい ,所有 しょゆう 集合 しゅうごう 函數 かんすう 都會 とかい 執行 しっこう Null-elimination 步 ふ 驟,因 いん 此計算 けいさん 的 てき 最終 さいしゅう 結果 けっか 中 ちゅう 不 ふ 包含 ほうがん Null。
請注意 ちゅうい ,消 しょう 除 じょ Null不等 ふとう 於用零 れい 替 がえ 換 かわ Null。例 れい 如下表 ひょう 中 ちゅう AVG(i)
(求 もとむ i
欄 らん 位 い 的 てき 平均 へいきん 值)將 しょう 給 きゅう 出 で 與 あずか AVG(j)
不同 ふどう 的 てき 結果 けっか :
i
j
150
150
200
200
250
250
NULL
0
這裡的 てき AVG(i)
是 ぜ 200(150, 200 和 わ 250的 てき 平均 へいきん ),而 AVG(j)
則 のり 是 ぜ 150(150, 200, 250 和 わ 0 的 てき 平均 へいきん )。在 ざい SQL 聚合函數 かんすう 中 ちゅう ,AVG(z)
不等 ふとう 於 SUM(z)/COUNT(*)
,這是一 いち 個 こ 眾所周知 しゅうち 的 てき 副作用 ふくさよう 。
聚合函數 かんすう 的 てき 輸出 ゆしゅつ 也可以是空 そら 值。這裡是 ぜ 一 いち 個 こ 例 れい 子 こ :
SELECT COUNT ( * ), MIN ( e . Wage ), MAX ( e . Wage )
FROM Employee e
WHERE e . LastName LIKE '%Jones%' ;
此查詢將始終 しじゅう 輸出 ゆしゅつ 一 いち 行 ぎょう ,計算 けいさん 姓氏 せいし 中 ちゅう 包含 ほうがん “Jones”的 てき 員 いん 工 こう 人數 にんずう ,並 なみ 給 きゅう 出 で 這些員 いん 工 こう 的 てき 最低 さいてい 和 わ 最高 さいこう 工 こう 資 し 。但 ただし 是 ぜ ,如果沒 ぼつ 有 ゆう 員 いん 工 こう 符合 ふごう 給 きゅう 定 じょう 的 てき 標準 ひょうじゅん 會 かい 發生 はっせい 什麼 いんも ?計算 けいさん 空 そら 集 しゅう 的 てき 最小 さいしょう 值或最大 さいだい 值是不可能 ふかのう 的 てき ,所以 ゆえん 這些結果 けっか 必須 ひっす 為 ため NULL,表示 ひょうじ 沒 ぼつ 有 ゆう 答案 とうあん 。這不是 ぜ 未知 みち 值,它是表示 ひょうじ 沒 ぼつ 有 ゆう 值的空 そら 值。結果 けっか 是 ぜ :
COUNT(*)
MIN(e.Wage)
MAX(e.Wage)
0
NULL
NULL
當 とう 兩個 りゃんこ 空 そら 值相等 とう 時 じ :分 ぶん 組 ぐみ ,排 はい 序 じょ 和 わ 一 いち 些設置 せっち 操作 そうさ [ 编辑 ]
由 よし 於 SQL 2003將 しょう 所有 しょゆう Null標記 ひょうき 定義 ていぎ 為 ため 彼此 ひし 不 ふ 相等 そうとう ,因 いん 此需要 じゅよう 特殊 とくしゅ 定義 ていぎ 才能 さいのう 在 ざい 執行 しっこう 某 ぼう 些操作 そうさ 時 じ 將 はた Null分 ぶん 組 ぐみ 在 ざい 一 いち 起 おこり 。SQL將 はた “任 にん 何 なん 兩個 りゃんこ 彼此 ひし 相等 そうとう 的 てき 值或任 にん 何 なん 兩個 りゃんこ 空 そら 值”定義 ていぎ 為 ため “没 ぼつ 有 ゆう 不同 ふどう ”(not distinct
)。這允許 いんきょ SQL在 ざい 使用 しよう GROUP BY 子 こ 句 く 時 じ 對 たい Null 進行 しんこう 分 ぶん 組 ぐみ 和 わ 排 はい 序 じょ 。
其他 SQL操作 そうさ ,子 こ 句 く 和 わ 關 せき 鍵 かぎ 字 じ 在 ざい 處理 しょり 空 そら 值時使用 しよう “没 ぼつ 有 ゆう 不同 ふどう ”(not distinct
)。這些包括 ほうかつ 以下 いか 內容:
PARTITION BY 排 はい 序 じょ 和 かず 開 ひらく 窗 まど 功 こう 能 のう 的 てき ROW_NUMBER子 こ 句 く
UNION,INTERSECT和 わ EXCEPT操作 そうさ 符 ふ ,它們將 はた NULL視 し 為 ため 用 よう 於行比較 ひかく /消 しょう 除 じょ 目的 もくてき 相 しょう 同 どう
DISTINCT SELECT查詢中 ちゅう 使用 しよう 的 てき 關 せき 鍵 かぎ 字 じ
SQL規範 きはん 中 ちゅう 的 てき UNION操作 そうさ 符 ふ 效果 こうか 會 かい 違反 いはん 空 そら 值不相等 そうとう 的 てき 原則 げんそく (它們確實 かくじつ 相互 そうご 確定 かくてい 了 りょう 空 そら 值)。因 よし 此某些 SQL操作 そうさ (如聯合 れんごう 或 ある 區別 くべつ )可能 かのう 產 さん 生 せい 不能 ふのう 表示 ひょうじ 確定 かくてい 信 しん 息 いき 的 てき 結果 けっか ,這與涉 わたる 及與 NULL進行 しんこう 顯 あらわ 式 しき 比較的 ひかくてき 操作 そうさ (例 れい 如 WHERE上面 うわつら 討論 とうろん 的 てき 子 こ 句 く 中 ちゅう 的 てき 那 な 些操作 そうさ )不同 ふどう 。在 ざい 1979年 ねん 的 てき Codd提案 ていあん 中 ちゅう (基本 きほん 上 じょう 被 ひ SQL92採納 さいのう ),通過 つうか 論證 ろんしょう 刪除集合 しゅうごう 操作 そうさ 中 ちゅう 的 てき 重複 じゅうふく 項 こう “在 ざい 比 ひ 檢索 けんさく 操作 そうさ 的 てき 評 ひょう 估中的 てき 等式 とうしき 測 はか 試 ためし 更 さら 低 ひく 的 てき 細 ほそ 節 ぶし 層 そう 次 じ 上 じょう 發生 はっせい ”這種語義 ごぎ 不一致 ふいっち 性 せい 是 ぜ 合理 ごうり 的 てき 。
SQL標準 ひょうじゅん 沒 ぼつ 有明 ありあけ 確 かく 定義 ていぎ 空 そら 值的默認 もくにん 排 はい 序 じょ 順序 じゅんじょ 。相反 あいはん ,在 ざい 符合 ふごう 性 せい 的 てき 系統 けいとう 上 じょう ,子 こ 句 く ORDER BY可 か 以分別 べつ 使用 しよう 列 れつ 表 ひょう NULLS FIRST或 ある NULLS LAST,分別 ふんべつ 在所 ざいしょ 有數 ゆうすう 據 よりどころ 值之前 まえ 或 ある 之 これ 後 ご ,對空 たいくう 值進行 しんこう 排 はい 序 じょ 。然 しか 而,並 なみ 非 ひ 所有 しょゆう 資料 しりょう 庫 こ 供應 きょうおう 商都 しょうと 實現 じつげん 了 りょう 這一功 こう 能 のう 。不 ふ 實現 じつげん 此功能 のう 的 てき 供應 きょうおう 商 しょう 可能 かのう 會 かい 在 ざい DBMS中 ちゅう ,為 ため 空 そら 值的排 はい 序 じょ 指定 してい 不同 ふどう 的 てき 處理 しょり 方法 ほうほう 。
對 たい 索引 さくいん 操作 そうさ 的 てき 影響 えいきょう [ 编辑 ]
某 ぼう 些 SQL產品 さんぴん 不可 ふか 以建立 こんりゅう 包含 ほうがん NULL 的 てき 索引 さくいん 鍵 かぎ 。例 れい 如,PostgreSQL 8.3 版本 はんぽん 之 の 前 まえ B樹 き 索引 さくいん 的 てき 文 ぶん 件 けん 說明 せつめい ,
B-樹 じゅ 可 か 以處理 しょり 數 すう 據 よりどころ 的 てき 等式 とうしき 和 わ 範圍 はんい 查詢,這些數 すう 據 よりどころ 可 か 以按照 あきら 某 ぼう 種 たね 順序 じゅんじょ 排 はい 序 じょ 。特別 とくべつ 是 ぜ ,PostgreSQL查詢規 ぶんまわし 劃器會 かい 在 ざい 使用 しよう < ≤ = ≥ > 這些運算 うんざん 符 ふ 進行 しんこう 比較 ひかく 時 じ ,涉 わたる 及索引列時 じ 考慮 こうりょ 使用 しよう B-樹 じゅ 索引 さくいん :
< ≤ = ≥ > 等 とう 效 こう 於這些運算 うんざん 符 ふ (如 BETWEEN 和 わ IN)組合 くみあい 的 てき 構造 こうぞう 也可以用 B-樹 じゅ 索引 さくいん 搜索 そうさく 實現 じつげん 。(但 ただし 請注意 ちゅうい ,IS NULL 不 ふ 是 ぜ 等 とう 於而且不可 ふか 索引 さくいん 。):
在 ざい 強制 きょうせい 唯 ただ 一性的建立索引執行情況下,欄 らん 位 い 為 ため NULL值會從 したがえ 索引 さくいん 中 ちゅう 被 ひ 排除 はいじょ ,並 なみ 且不會 かい 在 ざい NULL之 の 間 あいだ 強制 きょうせい 執行 しっこう 唯一 ゆいいつ 性 せい 。再 さい 次 つぎ 引用 いんよう PostgreSQL文 ぶん 件 けん :
當 とう 索引 さくいん 被 ひ 宣告 せんこく 是 ぜ 唯 ただ 一 いち 時 じ ,將 はた 不 ふ 允許 いんきょ 具有 ぐゆう 相 しょう 同 どう 索引 さくいん 值的多 た 個 こ 表 ひょう 行 ぎょう 。空 そら 值不被 ひ 視 し 為 ため 相等 そうとう 。多 た 列 れつ 唯 ただ 一索引只會拒絕所有索引列在兩行中相等的情況。
這種作法 さほう 符合 ふごう SQL:2003-純量 じゅんりょう 空 そら 值比較的 ひかくてき 規範 きはん 。
索引 さくいん 空 そら 值的另一種方法涉及按照 SQL:2003定義 ていぎ 的 てき 行為 こうい 將 はた 它們處理 しょり 為 ため 不明 ふめい 顯 あらわ 。例 れい 如,Microsoft SQL Server文 ぶん 檔聲明 せいめい 如下:
為 ため 了 りょう 建立 こんりゅう 索引 さくいん ,NULL比較 ひかく 相等 そうとう 。因 よし 此,如果鍵 かぎ 在 ざい 多 た 行 ぎょう 中 ちゅう 為 ため NULL,則 のり 無法 むほう 創建 そうけん 唯一 ゆいいつ 索引 さくいん 或 ある UNIQUE 約束 やくそく 。當 とう 選擇 せんたく 唯 ただ 一索引或唯一約束的列時,選擇 せんたく 定義 ていぎ 為 ため NOT NULL 的 てき 列 れつ 。
這兩種 しゅ 索引 さくいん 策略 さくりゃく 都 と 與 あずか SQL:2003定義 ていぎ 的 てき Null行為 こうい 一致 いっち 。因 よし 為 ため 索引 さくいん 方法 ほうほう 沒 ぼつ 有 ゆう 被 ひ SQL:2003標準 ひょうじゅん 明確 めいかく 定義 ていぎ ,所以 ゆえん 空 そら 值的索引 さくいん 策略 さくりゃく 完全 かんぜん 由 よし 供應 きょうおう 商 しょう 來 らい 設計 せっけい 和 わ 實現 じつげん 。
SQL定義 ていぎ 了 りょう 兩個 りゃんこ 函數 かんすう 來 らい 顯 あらわ 式 しき 處理 しょり 空 そら 值:NULLIF 和 わ COALESCE 。這兩個 りゃんこ 函數 かんすう 都 と 是 ぜ CASE表 ひょう 達 たち 式 しき 的 てき 縮寫 しゅくしゃ 。
NULLIF 函數 かんすう 接受 せつじゅ 兩個 りゃんこ 參 さん 數 すう 。如果第 だい 一個參數等於第二個參數,則 のり NULLIF 返 かえし 回 かい Null。否 いや 則 のり ,返 かえし 回 かい 第 だい 一 いち 個 こ 參 まいり 數 すう 的 てき 值。
因 いん 此,NULLIF是 ぜ 以下 いか CASE表 ひょう 達 たち 式 しき 的 てき 縮寫 しゅくしゃ :
CASE WHEN value1 = value2
THEN
NULL
ELSE
value1
END
COALESCE 函數 かんすう 实现了 りょう 空 そら 值结合 あい 运算符 ふ 。接受 せつじゅ 參 さん 數列 すうれつ 表 ひょう ,從 したがえ 列 れつ 表 ひょう 中 ちゅう 返 かえし 回 かい 第 だい 一 いち 個 こ 非 ひ Null值:
COALESCE ( value1 , value2 , value3 , ...)
COALESCE被 ひ 定義 ていぎ 為 ため 以下 いか SQL CASE表 ひょう 達 たち 式 しき 的 てき 簡寫:
CASE WHEN value1 IS NOT NULL THEN value1
WHEN value2 IS NOT NULL THEN value2
WHEN value3 IS NOT NULL THEN value3
...
END
一 いち 些 SQL DBMS 供應 きょうおう 商 しょう 實 み 作 さく 特定 とくてい 的 てき 功 こう 能 のう 類似 るいじ COALESCE 函數 かんすう 。某 ぼう 些系統 けいとう (例 れい 如 Transact-SQL)實 じつ 作為 さくい ISNULL函數 かんすう ,或 ある 者 もの 功 こう 能 のう 類似 るいじ COALESCE 的 てき 其他函數 かんすう 。
ORACLE NVL函數 かんすう 接受 せつじゅ 兩個 りゃんこ 參 さん 數 すう 。它返回 かい 第 だい 一 いち 個 こ 非 ひ NULL參 さん 數 すう ,如果所有 しょゆう 參 さん 數 すう 都 と 是 ぜ NULL,則 のり 返 かえし 回 かい NULL。
COALESCE 表 ひょう 達 たち 式 しき 可 か 被 ひ 轉換 てんかん 成 なり 等 とう 效 こう 的 てき NVL表 ひょう 達 たち 式 しき 這樣的 てき :
COALESCE ( val1 , ... , val { n } )
變成 へんせい :
NVL ( val1 , NVL ( val2 , NVL ( val3 , … , NVL ( val { n - 1 } , val { n } ) … )))
這個函數 かんすう 的 てき 用例 ようれい 是 ぜ 在 ざい 一個表達式中用某一特定值替換 NULL,例 れい 如 NVL(SALARY, 0)
,意 い 為 ため '若 わか 薪 たきぎ 資 し 欄 らん 位 い 缺 かけ 少 しょう 值,則 のり 以 0 替 がえ 換 かわ 它'。但 ただし 有 ゆう 一 いち 個 こ 明 あきら 顯 あきら 例外 れいがい ,在 ざい 大 だい 多數 たすう 實 じつ 作中 さくちゅう COALESCE 只 ただ 評 ひょう 估其參 さん 數列 すうれつ 表 ひょう 到 いた 逹第一 いち 個 こ 非 ひ NULL值,這有幾 いく 個 こ 重要 じゅうよう 的 てき 原因 げんいん :第 だい 一 いち 個 こ 非 ひ NULL 參 さん 數 すう 之 これ 後 ご 的 てき 參 さん 數 すう 可能 かのう 是 ぜ 一 いち 個 こ 函數 かんすう ,它可能 かのう 在 ざい 計算 けいさん 成 なり 本上 ほんかん 很昂貴 とうと 、無效 むこう 、或 ある 者 もの 可能 かのう 會 かい 產 さん 生 せい 意 い 料 りょう 之 の 外的 がいてき 副作用 ふくさよう ;然 しか 而 NVL 將 しょう 評 ひょう 估參數列 すうれつ 表 ひょう 其中的 てき 所有 しょゆう 參 さん 數 すう 。
數 かず 據 よりどころ 類型 るいけい 為 ため 空 そら 和 かず 未知 みち [ 编辑 ]
NULL
字面 じめん 量 りょう 在 ざい SQL中 ちゅう 是 ぜ 无类型 がた 的 てき 。[ 1]
SQL-92 引入了 りょう CAST
,允 まこと 许把NULL
字面 じめん 量 りょう 强制 きょうせい 转为特定 とくてい 类型的 てき Null,例 れい 如
表示 ひょうじ INTEGER类型的 てき 未知 みち 值。
BOOLEAN數 すう 據 よりどころ 類型 るいけい [ 编辑 ]
版本 はんぽん 关键字 じ 相 あい 关ISO/IEC SQL部分 ぶぶん