摘要:[SQL Server] 利用計算的資料行(Computed Column Specification)幫助擴展資料表的使用
以前在撰寫一些程式需求時,常常因為原先資料庫的設計,那SQL語法常常會做一些格式的改變,
或是不同欄位的合併產出,
常見的可能像是原本的資料表設計會把時間的年、月、日、甚至是時間都拆開到不同的欄位做存放,
就像原問題的狀況一樣,
但是在使用的時候,卻常常需要合併起來處理,往往就會寫像是
SELECT CONVERT(date, (Y+'/'+M+'/'+D)) as dd
,CONVERT(time(0) ,(H+':'+Mi+':'+S)) as tt
From T1
當確定了公式邏輯後,就可以下這樣的指令去增加計算的資料行
ALTER TABLE T1 ADD dd AS CONVERT(date, (Y+'/'+M+'/'+D))
ALTER TABLE T1 ADD tt AS CONVERT(time(0),(H+':'+Mi+':'+S))
之後就可以直接寫
Select dd,tt From T1
就可以很方便的查詢出日期與時間了, 當然的,也可以輸入case when end 去作為公式
ALTER TABLE T1 ADD late AS (
case when CONVERT(time(0),(H+':'+Mi+':'+S)) > '08:00:00'
and CONVERT(time(0),(H+':'+Mi+':'+S)) < '17:00:00'
Then dateadd(HH,-8,CONVERT(time(0),(H+':'+Mi+':'+S)))end)
而裡面的資料並不會真正的存在資料表裡,因為他是被計算出來的。
從SSMS裡面去看,可以在資料表上右鍵選擇設計模式去看,
你剛剛輸入的公式就會列在下方,"計算資料行規格裡" 。
當然要有所修改的時候,可以直接在這邊修改即可, 同時你也會發現在資料類型的地方他會是空的,
而呈現的結果就會像是
是不是還頗方便呢!!