[SQL SERVER][Performance]重視 Null 值 (2)
上一篇我談到 Null 一些注意事項,大概有以下2點。
1.資料表中明確使用 Not Null 並指定 Default Values
2.資料表中儘可能不允許 Null 值。
這篇我們來看看資料庫相關Null選項。
ANSI NULL 預設值:(請明確使用關鍵字,並不依賴資料庫選項)
覆寫新資料行的預設 Null 屬性。
(擷取部份)
參考: SET ANSI_NULL_DFLT_ON (Transact-SQL) 、SET ANSI_NULL_DFLT_OFF (Transact-SQL)
ANSI NULLS 已啟用:(建議 True)
指定搭配 Null 值一起使用時,等於 (=) 和不等於 (<>) 比較運算子的 ISO 標準行為。
(擷取部份)
返回0筆資料
set ansi_nulls on
select * from testnull
where c1 = NULL
返回所有 Null 資料
set ansi_nulls off
select * from testnull
where c1 = NULL
參考:SET ANSI_NULLS (Transact-SQL)
ANSI 填補已啟用:(建議 True)
控制資料行如何儲存比資料行的定義大小還短的值,
以及如何儲存 char、varchar、binary 和 varbinary 資料含有尾端空格的值。
(擷取部份)
參考:SET ANSI_PADDING (Transact-SQL)
ANSI 警告已啟用:(依需求設定,並不依賴資料庫選項)
指定數個錯誤狀況的 ISO 標準行為。
(擷取部份)
參考:SET ANSI_WARNINGS (Transact-SQL)
串連 Null 產生 Null:(建議 True)
控制是否將串連結果當作 Null 或空字串值來處理。
(擷取部份)
SET CONCAT_NULL_YIELDS_NULL on
select 'rico'+null
SET CONCAT_NULL_YIELDS_NULL off
select 'rico'+null