2012-01-26 125 views
1

我有幾個表包含幾個字段的字符串。其中一些字段可能包含也可能不包含數據。如果我在創建記錄時創建了一個空字符串字段的記錄,當我對該記錄執行讀取查詢時,是否會成爲問題,因爲字段爲空或查詢是否返回空字符串? 基於什麼考慮?非nullabe字符串或可空字符串,以及何時知道區別?數據庫字符串字段類型:是否應該爲空?

感謝您的建議。

回答

1

查詢將返回一個空字符串(如果這是存儲在數據庫中的)和一個空值(System.DBNull),如果它是一個可爲null的空字符串。

但是,該決定應基於您正在建模的數據,而不是查詢的功能。

DB中的空值通常表示值未知或空白。這可以不同於可以用來表示沒有價值的空字符串。

以一個MiddleName字段爲例。您可能想區分沒有中間名的人(空字符串)和尚未輸入中間名的人(空值)。在這種情況下,你需要一個可爲空的字符串字段。

1

這已經一遍又一遍的爭論了數百萬次。但在我看來,NULL值是有原因的,你應該遠離「魔術」值(即使空字符串意味着什麼,不是)。

NULL值不會在讀取時轉換爲任何內容。你會得到空。你應該把它解釋爲「這個值尚未設定」,並以這種方式來對待它。如果你用任何魔法值(例如空字符串)替換它,那麼你只是在尋找麻煩,遲早魔法值會開始具有別的意義,並且你不會知道如何區別它從未設置過。

換句話說,如果您考慮屬性爲可選,那麼它肯定是可空的候選者。每當你開始與自己辯論時,記住單詞「可選」,我相信你會做出一個好決定。

1

在數據庫管理員的堆棧交換站點上有一個similar question。他們幾乎迴應這裏所說的話。

有一件沒有提到的事情是,如果你試圖乘以一個真值的空值,你會得到一個空結果。許多其他操作也是如此。

相關問題