当在 SQL Server 2008 的 table 中找不到记录时 Select 语句为 return 常量

Select statement to return constant when no records found in table in SQL Server 2008

我有一个 table 数据,现在我需要 return 在 select 语句中归零,例如,如果 table 中没有记录。我需要在存储过程中使用它。

-- If no records exists in below select statement
SELECT ID,Text,Date FROM tblData WHERE ID = 12

IF (@@ROWCOUNT = 0)
BEGIN
    SELECT -5 AS ID
END

输出:

ID  Text  Date


ID
-5

预期输出

ID
-5

对于单个标量值,您可以使用类似的东西;

SELECT ISNULL((SELECT ID FROM tblData WHERE ID = 12), 0) as ID

里斯

如果你想 return 1 行即使没有匹配,你可以使用聚合:

SELECT (CASE WHEN COUNT(*) = 0 THEN -5 ELSE MAX(ID) END) as ID
FROM tblData
WHERE ID = 12;

我总是使用 Exists 语句。

if exists(SELECT ID FROM tblData WHERE ID = 12)
    select 0 as RowsExist
else
    select 1 as RowsExist
SELECT (CASE WHEN Ta.ID IS NULL THEN TBL.ID 
ELSE Ta.ID END) AS ID,Ta.Text,Ta.Date
FROM (VALUES(-5)) AS TBL(ID)
LEFT JOIN
(
   SELECT ID,Text,Date FROM tblData WHERE ID = 12
)
AS Ta ON Ta.ID = Ta.ID