SQL 服务器:ISNULL 未返回值

SQL Server : ISNULL not returning a value

我正在尝试编写 SQL 语句(在 Microsoft SQL 服务器中),如果找不到任何内容,它将始终 return 值为 0。

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

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

现在,如果我输入 return 是一个值的真语句(将 'EDRD' 替换为 'ERD'),它 return 的值为 1,这是正确的。

我需要它 return 零值的原因是我计划将此语句用作我需要 ID(而不是 GENESYS_NAME 的主语句的子查询) 而我的 table 已将 0 留作未知条目。

有什么帮助吗?

如果您只希望得到 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') 
)