SQL 视图中列的默认值

djo*_*ert 0 sql default view isnull

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

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

我想用 '000' 来填充空白行以表示建筑,用 '0000' 来表示房间。

我可以将这些字段合并到第四个字段中(完整 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

Alf*_*f47 5

如果该字段不可为空,则数据可能会存储为空字符串而不是 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
Run Code Online (Sandbox Code Playgroud)

这将处理 NULL 和空字符串,并允许您构建完整 ID,而无需执行两次 CASE 语句。