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