2012-10-16 95 views
0

我有一個SQL視圖vith多列。 ID(宗地編號)例如:7465-85-7468 大廈(如果需要特定建築物的ID)例如:102 房(如果需要特定的房間的ID)例如:0023SQL視圖中列的默認值

我有一個ID對於每一行,但對於大多數行,沒有建築ID或房間ID

我想用'000'填充空白行,建築'0000'。

我可以CONCAT在第四場(全ID),這些領域

它試圖讓與「ISNULL」的默認值,但沒有奏效。

現在,我有這樣的

ID /建築/房/全ID

7848-05-6956///7848-05-6956--

somethins

6985-26-7485/102/0000/6985-26-7485-102-0000

7236-12-0145// 0223/7236-12-0145--0223

我需要這個

ID /建築/房/全ID

7848-05-6956/000/0000/7848-05-6956-000-0000

6985-26-7485/102/0000/6985-26-7485-102-0000

7236-12-0145/000/0223/7236-12-0145-000-0223

回答

3

如果該字段不可爲空,則可以將數據存儲爲空字符串而不是NULL。

嘗試做類似如下:

SELECT x.ID, x.Building, x.Room, ID + '-' + Building + '-' + Room AS [Full ID] 
FROM (
    SELECT 
    ID 
    , CASE WHEN ISNULL(Building, '') = '' THEN '000' ELSE Building END AS Building 
    , CASE WHEN ISNULL(Room, '') = '' THEN '0000' ELSE Room END AS Room 
    FROM MyTable) x 

這將同時處理NULL和空字符串,它將使你建立完整ID而不執行兩次的CASE語句。

+0

您忘記了CASE語句中的ELSE子句。如果'Building'或'Room'不爲null,那麼CASE語句將返回'NULL'。你需要'ELSE建築END AS建築'和'ELSE房間END AS房間'分別 – Tobsey

+0

我剛剛更新了它...... *拍拍額頭*對不起!我不知道我是如何錯過的! :) – Alf47

+0

它的工作原理!非常感謝,它會爲我節省很多工作時間 – djobert