解讀在SQL Server中處理空值時(shí)涉及的三個(gè)問(wèn)題_Mssql數(shù)據(jù)庫(kù)教程
推薦:如何使用 SQL Server 數(shù)據(jù)庫(kù)嵌套子查詢(xún)很多SQL Server程序員對(duì)子查詢(xún)(subqueries)的使用感到困惑,尤其對(duì)于嵌套子查詢(xún)(即子查詢(xún)中包含一個(gè)子查詢(xún))�,F(xiàn)在,就讓我們追本溯源地探究這個(gè)問(wèn)題。 有兩種子查詢(xún)類(lèi)型:標(biāo)準(zhǔn)和相關(guān)。標(biāo)準(zhǔn)子查詢(xún)執(zhí)行一次,結(jié)果反饋給父查詢(xún)。相關(guān)子查詢(xún)每行執(zhí)行一次,由
這篇文章主要介紹了在SQL Server中處理空值時(shí)所涉及的3個(gè)問(wèn)題:計(jì)數(shù)、使用空表值以及外鍵處理。
用COUNT(*)處理空值
大多數(shù)集合函數(shù)都能在計(jì)算時(shí)消除空值;COUNT函數(shù)則屬于例外。對(duì)包含空值的一個(gè)列使用COUNT函數(shù),空值會(huì)從計(jì)算中消除。但假如COUNT函數(shù)使用一個(gè)星號(hào),它就計(jì)算所有行,而不管是否存在空值。
如果希望COUNT函數(shù)對(duì)給定列的所有行(包括空值)進(jìn)行計(jì)數(shù),請(qǐng)使用ISNULL函數(shù)。ISNULL函數(shù)會(huì)將空值替換成有效的值。
事實(shí)上,對(duì)集合函數(shù)來(lái)說(shuō),如果空值可能導(dǎo)致錯(cuò)誤結(jié)果,ISNULL函數(shù)就非常有用。記住在使用一個(gè)星號(hào)時(shí),COUNT函數(shù)會(huì)對(duì)所有行進(jìn)行計(jì)算。下例演示了空值在AVG和COUNT集合函數(shù)中的影響:
|
以下為引用的內(nèi)容: SET NOCOUNT ON GO WIsNullFnctnCol1 UsingAsterisk ---------------- ------------- -------------- ------------ 15 11 3 4 4 |
恰當(dāng)使用空表值
SQL Server可能出現(xiàn)一種特殊情況:在引用父表的一個(gè)表中,因?yàn)椴辉试S空值,所以“聲明引用完整性”(DRI)可能不會(huì)得到強(qiáng)制。即使父表不包含空值,在子表引用了父表主鍵約束或惟一約束的列中,也可能包含空值。
假如來(lái)自父表的值目前未知,就不會(huì)有任何問(wèn)題。例如,父表可能是一個(gè)地址表,而子表可能包含聯(lián)系信息。由于許多原因,可能暫時(shí)不知道要傳給父表的聯(lián)系地址。這是一種基于時(shí)間的問(wèn)題,空值在其中或許是合適的。
如下例所示,我們創(chuàng)建父表,并在其中插入兩個(gè)值。
|
以下為引用的內(nèi)容:
GOCREATE TABLE Parent(pkey1 INT IDENTITY NOT NULL CONSTRAINT pkParent PRIMARY KEY,col1 INT NULL)GOINSERT Parent (col1) VALUES (284)GOINSERT Parent (col1) VALUES (326)GO |
分享:如何在SQL Server中去除表中不可見(jiàn)字符以下的實(shí)例為去除指定表中數(shù)據(jù)類(lèi)型是VARCHAR,CHAR,NVARCHAR的字段值中的不可見(jiàn)字符。 注釋?zhuān)捍颂幹蝗サ羟昂蟮牟豢梢?jiàn)字符,不包括中間的字符,而且沒(méi)有區(qū)分中文。 在使用前需要指定對(duì)應(yīng)要修改的表名,并且需要在對(duì)應(yīng)數(shù)據(jù)庫(kù)下執(zhí)行; SET NOCOUNT ON DECLARE @T
- sql 語(yǔ)句練習(xí)與答案
- 深入C++ string.find()函數(shù)的用法總結(jié)
- SQL Server中刪除重復(fù)數(shù)據(jù)的幾個(gè)方法
- sql刪除重復(fù)數(shù)據(jù)的詳細(xì)方法
- SQL SERVER 2000安裝教程圖文詳解
- 使用sql server management studio 2008 無(wú)法查看數(shù)據(jù)庫(kù),提示 無(wú)法為該請(qǐng)求檢索數(shù)據(jù) 錯(cuò)誤916解決方法
- SQLServer日志清空語(yǔ)句(sql2000,sql2005,sql2008)
- Sql Server 2008完全卸載方法(其他版本類(lèi)似)
- sql server 2008 不允許保存更改,您所做的更改要求刪除并重新創(chuàng)建以下表
- SQL Server 2008 清空刪除日志文件(瞬間日志變幾M)
- Win7系統(tǒng)安裝MySQL5.5.21圖解教程
- 將DataTable作為存儲(chǔ)過(guò)程參數(shù)的用法實(shí)例詳解
Mssql數(shù)據(jù)庫(kù)教程Rss訂閱編程教程搜索
Mssql數(shù)據(jù)庫(kù)教程推薦
- 用人工智能自動(dòng)對(duì)SQL語(yǔ)句進(jìn)行重寫(xiě)
- SQL Server 2005中更改sa的用戶(hù)名的方法
- 解析在IIS中為SQL Server 2008配置報(bào)表服務(wù)
- 怎樣合理設(shè)置內(nèi)存讓數(shù)據(jù)庫(kù)與其他程序共存
- 揭秘八個(gè)有用的WordPress的SQL語(yǔ)句
- 深入淺出SQL教程之Group by和Having
- 詳細(xì)解析SQL Server安裝sp4補(bǔ)丁報(bào)錯(cuò)的方法
- 關(guān)于SQL Server數(shù)據(jù)庫(kù)維度表和事實(shí)表的概述
- 詳解:SQL Server 2000 的各種版本
- 如何在SAN上創(chuàng)建SQL Server群集
猜你也喜歡看這些
- 利用Xtrabackup工具備份及恢復(fù)(MySQL DBA的必備工具)
- MySQL 5.6 如何更改安全的處理密碼探討
- 解決bash: mysql: command not found 的方法
- 在SQL Server的try...catch語(yǔ)句中獲取錯(cuò)誤消息代碼的的語(yǔ)句
- SQL分組排序去重復(fù)的小實(shí)例
- MYSQL SET類(lèi)型字段的SQL操作知識(shí)介紹
- 解析mysql中:單表distinct、多表group by查詢(xún)?nèi)コ貜?fù)記錄
- 網(wǎng)頁(yè)模板MySQL出現(xiàn)Can't create/write to file 'C:\Windows\TEMP\#sql_990_0.MYI解決辦法
- MySQL:數(shù)據(jù)庫(kù)知識(shí)點(diǎn)
- SQL提示Login failed for user#039;sa#039;錯(cuò)誤的解決方案
- 相關(guān)鏈接:
- 教程說(shuō)明:
Mssql數(shù)據(jù)庫(kù)教程-解讀在SQL Server中處理空值時(shí)涉及的三個(gè)問(wèn)題
。