SQL Server初學者問題:如何在SQL Server中定義一個「複雜」的ComputedColumn?
我想在SQL Server(2008)中引入一個計算列。在SQL Server Management Studio的表設計器中,我可以做到這一點,但設計人員只給我提供一個編輯單元來定義此列的表達式。由於我的計算列將會相當複雜(取決於幾個數據庫字段和一些個案差異),我希望有一個更舒適和可維護的方法來輸入列定義(包括格式化換行符等)。
我見過有一個選項可以在SQL Server中定義函數(標量值或表值函數)。定義這樣一個函數並將該函數用作列規範可能更好嗎?什麼樣的函數(標量值,表值)?
爲了使一個簡單的例子:
我有兩個數據庫列:
DateTime1 (smalldatetime, NULL)
DateTime2 (smalldatetime, NULL)
現在我要定義一個計算列「狀態」,它可以有四個可能的值。在虛擬語言:
if (DateTime1 IS NULL and DateTime2 IS NULL)
set Status = 0
else if (DateTime1 IS NULL and DateTime2 IS NOT NULL)
set Status = 1
else if (DateTime1 IS NOT NULL and DateTime2 IS NULL)
set Status = 2
else
set Status = 3
理想情況下,我想有一個函數GetStatus()
可以訪問錶行的,我想計算的「狀態」的值不同的列值,然後只定義計算列規格爲GetStatus()
,不帶參數。
這可能嗎?或者使用「複雜」計算列定義的最佳方法是什麼?
感謝您提前提示!
謝謝,工作正常!但是當我想稍後改變公式時,我會做些什麼,比如說,添加一個額外的案例?我是否需要刪除表中的「狀態」列並再次運行這樣的「alter table」腳本? – Slauma 2010-04-07 21:51:38
是的 - 你將不得不放棄它,並重新創建它 – Ray 2010-04-07 21:56:50