伊莉討論區

標題: SQL Server儲存NULL或空值的問題 [打印本頁]

作者: z24374203    時間: 2018-6-23 02:26 PM     標題: SQL Server儲存NULL或空值的問題

請問有人知道當SQL Server儲存NULL與空值的差別嗎?

問題一、請問資料庫自己帶的NULL和程式Insert的NULL有一樣嗎?
因為我查詢資料表的時候,如果是資料庫自己帶的NULL,
搜尋出來的欄位底色與程式Insert的NULL不太一樣。

問題二、查了一下關於效能的問題,NULL效能和空值做比較,
空值的效能完勝NULL。雖然有給理由,就是和資料列的bitmap有關係。
這樣子,是要告訴我們Insert如果沒有值,也是塞一個預設值,而不是由
資料庫自己帶NULL的意思嗎?


問題三、資料庫自己帶的NULL和程式帶的空值,哪一個占用比較多的儲存空間?




作者: henry816    時間: 2018-7-4 02:54 PM

本帖最後由 henry816 於 2018-7-4 02:58 PM 編輯

問題一
NULL是一樣的, 除非你insert時是放入'NULL' 字串, 而不是真正的NULL但是NULL不會等於NULL, NULL = NULL 永遠是false, 所以判斷時要用IS或IsNull去判斷

問題二
NULL有其好用的地方, 用不用是視你程式目的來決定
例如: 某個欄位預期的值範圍是-99 ~ 99, 程式就可以用NULL表示這個欄位沒有被指定值

問題三
NULL最少佔用1個bit, 看你的欄位類型決定

作者: w12463    時間: 2018-7-4 08:23 PM

補充一下 varchar之類型態的 給空值('' <-?)和null意義不太一樣
當你要join或調用時 null有時會搞事
這類的在一開始就設default比較省事
作者: z24374203    時間: 2018-7-7 09:32 AM

henry816 發表於 2018-7-4 02:54 PM
問題一
NULL是一樣的, 除非你insert時是放入'NULL' 字串, 而不是真正的NULL但是NULL不會等於NULL, NULL = N ...

所以說,和select的效能差異不大?

是這樣嗎?
作者: love88131496    時間: 2018-7-13 01:05 PM

提示: 作者被禁止或刪除 內容自動屏蔽




歡迎光臨 伊莉討論區 (http://a401.file-static.com/) Powered by Discuz!