SQL视图中列的默认值

时间:2012-10-16 15:55:27

标签: sql view default isnull

我有一个SQL视图与许多列。 ID(地块ID)例如:7465-85-7468 建筑物(如果需要,特定建筑物的ID),例如:102 房间(特定房间的ID,如果需要)ex:0023

我有每行的ID,但对于大多数行,没有建筑物ID或房间ID

我想用'000'填充空白行进行构建,将'0000'填入Room。

我可以在第四个字段中使用这些字段(完整ID)

它尝试使用“ISNULL”获取默认值,但它不起作用。

现在,我有类似这样的事情

  

ID /建筑/房间/完整ID

     

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

     

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

1 个答案:

答案 0 :(得分: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语句。