编辑“︁
空值 (SQL)
”︁(章节)
跳转到导航
跳转到搜索
脚本错误:没有“Mainspace editnotice”这个模块。
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
==== CASE表達式 ==== SQL提供了兩種風格的條件表達式。一為“簡單 CASE”並像 switch 語句一樣操作。另一在標準中稱為“搜索 CASE”,並像 if ... elseif一樣運行。 簡單 <code>CASE</code> 表達式使用隱式相等比較,它們的執行和 DML的 <code>WHERE</code> 子句處理 Null 的規則是相同的。因此,一個簡單 <code>CASE</code> 表達式無法直接檢查 Null 的存在。在簡單 <code>CASE</code> 表達式中檢查 Null 總會導致結果為未知,如下所示: <syntaxhighlight lang="sql"> 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; </syntaxhighlight> 不管 i 列所包含的的值是什麼(即使它包含Null),該表達式的計算結果都為“未知” ,<code>'Is Null'</code> 字串將永遠不會返回。 另一方面,“搜索” <code>CASE</code>表達式可以使用謂詞 <code>IS NULL</code> 和 <code>IS NOT NULL</code> 條件。下例顯示如何使用搜索 <code>CASE</code>表達式來正確檢查 Null: <syntaxhighlight lang="sql"> 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; </syntaxhighlight> Oracle的 SQL 方言提供了一個內置函數 <code>DECODE</code>,可以用它來代替簡單的 CASE表達式,並考慮兩個相等的空值。 <syntaxhighlight lang="sql"> SELECT DECODE(i, NULL, 'Null Result', 0, 'Zero', 1, 'One') FROM t; </syntaxhighlight> 如果最後都沒有與條件相匹配的結果,所有這些結構將會返回 NULL;它們有一個預設的 <code>ELSE NULL</code> 子句。
摘要:
请注意,所有对Local Chinese Wikipedia的贡献均可能会被其他贡献者编辑、修改或删除。如果您不希望您的文字作品被随意编辑,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源(详情请见
Project:著作权
)。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)
导航菜单
个人工具
未登录
讨论
贡献
创建账号
登录
命名空间
页面
讨论
大陆简体
不转换
简体
繁體
大陆简体
香港繁體
澳門繁體
大马简体
新加坡简体
臺灣正體
查看
阅读
编辑
查看历史
更多
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
工具
链入页面
相关更改
特殊页面
页面信息