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')
)
我正在尝试编写 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')
)