Select语句return如果有值如果没有值

Select statement return if there is a value and if there is no value

这是我的 SQL 服务器存储过程的代码:

SELECT NOTES as DeletionNote 
FROM STCRCHF_LOG 
WHERE STHTR_ =  @transferNo

IF ( @@ROWCOUNT = 0) 

如果找到数据,我只想return NOTES 的字符串。否则,如果它没有数据,我只想 return 一个空字符串或 null。

截图(执行存储过程):

如果找到数据。在我的 Web 服务器端程序中,它获取数据。

如果没有数据。在我的 Web 服务器端程序中,它导致 NullReferenceException

如果只有一条记录是可能的,则:

select coalesce((SELECT NOTES FROM STCRCHF_LOG 
WHERE STHTR_ =  @transferNo), '') as DeletionNote

如果可能有多个记录,则以下内容将确保至少返回一行:

SELECT NOTES as DeletionNote FROM STCRCHF_LOG WHERE STHTR_ =  @transferNo
union all select '' /* or null if preferred */ where not exists (SELECT 1 FROM STCRCHF_LOG WHERE STHTR_ =  @transferNo)

检查 If(DataTable.Rows.Count >0) 检查您的网络编程水平以避免 NullReferenceException。根据条件,您可以决定如何处理网络程序的进一步逻辑。

从编程层面处理此类异常总是明智的做法。想一想其他人在 SQL 查询中进行更改而不知道代码的 Web 使用效果的情况。

我喜欢的另一种方法是使用虚拟值并像这样在外部应用。

-- sample data
DECLARE @table TABLE (someId INT IDENTITY, Col1 VARCHAR(100));
INSERT @table(Col1) VALUES ('record 1'),('record 2');

DECLARE @id INT = 11;

SELECT f.Col1
FROM   (VALUES(NULL)) AS dummy(x)
OUTER APPLY 
(
  SELECT t.Col1
  FROM   @table AS t
  WHERE t.someId = @id
) AS f;