我正在尝试编写一条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保留为未知条目。
有帮助吗?
如果期望结果只有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')
)