T-SQL遺漏值NULL

來源:互聯網
上載者:User
遺漏值NULL:
在運算式中有NULL那麼得到的結果也是NULL.NULL值從不和其他值相等,同樣也不和它本身相等。大多數的含有NULL的函數傳回值也是NULL,有一種情況例外,就是將函數設計為首先處理NULL。包括ISNULL和COALESCE。
在關聯式資料庫中NULL值會產生極大的耗費。假設以下這些表和資料:
CREATE TABLE #Values (K1 int identity,c1 int NULL)
INSERT #Values (c1) VALUES (1)
INSERT #Values (c1) VALUES (1)
INSERT #Values (c1) VALUES (NULL)
INSERT #Values (c1) VALUES (9)
這個查詢:
SELECT * FROM @Values WHERE c1 = 1

SELECT * FROM @Values WHERE c1 <> 1
可能認為會返回#Values表中的所有行,但實際不會,為了得到所有行,必須考慮到NULL值,所以SQL語句應該寫成:
SELECT * FROM #Values WHERE 才c1 = 1 or c1 IS NULL
避免使用NULL的一個可以接受方法就是使用啞元值來表示遺漏值,例如,可以用"N/A"或"NV"來代替字串列中的NULL;可以用-1來表示多種數值列中的遺漏值;可以用"1900-01-01"來代替日期等.

以上內容是《Transact-SQL權威指南》一書的讀書筆記,感謝作者KEN HENDERSON 和 譯者 健蓮科技 中國電力出版社 為我帶來這麼經典的T-SQL書籍。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.