SQL Server:ISNULL不返回值[重复]

问题描述 投票:0回答:1

我正在尝试编写一条SQL语句(在Microsoft SQL Server中),如果找不到任何内容,它将始终返回值0。

SELECT 
    ISNULL([ID], 0) AS ID 
FROM 
    ecdb.dbo.tbl_units 
WHERE 
    ([GENESYS_NAME] = 'EDRD');

上面的语句返回一个空值(无),请参见屏幕截图。

现在,如果我输入返回值的true语句(将'EDRD'替换为'ERD',它将返回值1,这是正确的。

之所以需要它返回零值,是因为我打算将此语句用作主语句的子查询,在该子语句中我需要ID(而不是GENESYS_NAME),并且我的表将0保留为未知条目。

有帮助吗?

enter image description here

sql sql-server isnull
1个回答
1
投票

如果期望结果只有1行,则可以使用MAX()之类的聚合函数:

SELECT ISNULL(MAX([ID]), 0) AS ID 
FROM ecdb.dbo.tbl_units 
WHERE ([GENESYS_NAME]='EDRD');

另一种方法,如果期望结果中有多于1行,也可以使用UNION ALL

SELECT [ID]
FROM ecdb.dbo.tbl_units 
WHERE ([GENESYS_NAME]='EDRD')
UNION ALL
SELECT 0
WHERE NOT EXISTS (
  SELECT 1 FROM ecdb.dbo.tbl_units 
  WHERE ([GENESYS_NAME]='EDRD') 
)
© www.soinside.com 2019 - 2024. All rights reserved.