0

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

我为每一行都有一个 ID,但对于大多数行,没有 Building ID 或 Room 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

4

1 回答 1

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

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

于 2012-10-16T15:58:21.853 回答