我有一个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
答案 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语句。