SQL NULL教學

5
--定義:NULL代表未知值,因此不等於任何值。 --NULL值的比較: --在查詢篩選NULL值時,需使用IS NULL IS NOT NULL ,但當 進行彙總運算時 --對於群組條件中,具有NULL值的資料視為相同群組,並進行彙總 運算。 --或者是應用DISTINCT以選取非重覆值時,也會將NULL的資料整 併成一筆資料回傳。 GO SELECT * FROM Employees GO SELECT DISTINCT Email FROM Employees SELECT Email FROM Employees GROUP BY Email GO SELECT DISTINCT Email FROM Employees WHERE Email IS NOT NULL

Transcript of SQL NULL教學

Page 1: SQL NULL教學

--定義:NULL代表未知值,因此不等於任何值。

--NULL值的比較:

--在查詢篩選NULL值時,需使用IS NULL 或IS NOT NULL ,但當

進行彙總運算時

--對於群組條件中,具有NULL值的資料視為相同群組,並進行彙總

運算。

--或者是應用DISTINCT以選取非重覆值時,也會將NULL的資料整

併成一筆資料回傳。

GO SELECT * FROM Employees GO SELECT DISTINCT Email FROM Employees SELECT Email FROM Employees GROUP BY Email GO SELECT DISTINCT Email FROM Employees WHERE Email IS NOT NULL

Page 2: SQL NULL教學

SELECT Email FROM Employees WHERE Email IS NOT NULL GROUP BY Email GO --NULL值的排序:

--由於ANSI並未對NULL的排序順序作定義,因此由各資料庫廠商

自行定義其規則。

--ORACLE預設NULL為最大值

--MSSQL預設NULL為最小值

GO SELECT DISTINCT Email FROM Employees ORDER BY Email GO --NULL的計算限制:

Page 3: SQL NULL教學

--大部份的彙總函數是針對非NULL數值進行彙整運算,如採用

COUNT(expr)指令時,

--是將expr運算式(或欄位)中非NULL值的資料筆數作計數的結

果。

--其他加總(SUM)函數、平均值(AVERAGE)、標準差(Standard

Derivation)

--或變異數(Variance)等常用的彙總函數也適用。

--但COUNT(*)計數函數則會回傳所有資料列的筆數,包含NULL

值。

--任何數值與NULL進行運算均傳回NULL值,但對字串與NULL連結

的處理上則不同,

--MSSQL將回傳NULL值,而ORACLE則否。

GO SELECT * FROM Employees SELECT COUNT(*) FROM Employees SELECT COUNT(Email) FROM Employees SELECT COUNT(ISNULL(Email,0)) FROM Employees GO

Page 4: SQL NULL教學

--語法

--ISNULL ( check_expression , replacement_value ) --參數

--<check_expression> --這是要檢查NULL 的運算式。check_expression 可以是

任何類型。

--<replacement_value> --這是check_expression 是NULL 時所傳回的運算式。

replacement_value --必須是能夠隱含地轉換成check_expresssion 類型的

類型。

select null+'A' --用預設值來替代NULL:

--由於NULL值使用上有諸多限制及注意事項,且當查詢NULL資料

時,

--往往造成索引失效的問題,可利用一些特定且具有意義(如

UNKNOWN)

--的資料以取代NULL,以避免上述困擾,也可以在欄位中指定預設

值,

--當使用者未輸入明確資料值時,可由資料庫自動填入預設值以替

Page 5: SQL NULL教學

代NULL。