检查SQL Select语句是否不返回任何行

时间:2011-10-28 16:20:21

标签: sql-server stored-procedures

我有一个选择陈述

SELECT     QBalance
FROM         dbo.CustomerBalance
WHERE     (CustomerID = 1) AND (MarchentID = @MerchantId)

我想检查该语句是否返回0行。我试图使用ISNULL和IFNULL,但似乎我错过了一些东西。

6 个答案:

答案 0 :(得分:41)

要确定是否存在匹配的行,您可以使用NOT EXISTS。这比计算所有匹配行更有效

IF NOT EXISTS(SELECT * FROM ...)
BEGIN
PRINT 'No matching row exists'
END

答案 1 :(得分:7)

SELECT    COUNT(*) 
FROM         dbo.CustomerBalance 
WHERE     (CustomerID = 1) AND (MarchentID = @MerchantId) 

如果你得到0,你得到0.:)

答案 2 :(得分:7)

如果这是SQL Server,请尝试@@ROWCOUNT

答案 3 :(得分:1)

试试这个:

SELECT     ISNULL(QBalance, 'ReplaceValue')
FROM         dbo.CustomerBalance
WHERE     (CustomerID = 1) AND (MarchentID = @MerchantId)

答案 4 :(得分:0)

还可以使用外部ISNULL检查吗?

SELECT ISNULL((
SELECT QBalance
FROM   dbo.CustomerBalance
WHERE  (CustomerID = 1) AND (MarchentID = @MerchantId)), 0)

答案 5 :(得分:0)

您可以使用@@ ROWCOUNT。对于例如

SELECT     QBalance
FROM         dbo.CustomerBalance
WHERE     (CustomerID = 1) AND (MarchentID = @MerchantId)

--This will return no of rows returned by above statement.
SELECT @@ROWCOUNT

如果第一个语句不返回任何行,则会得到0。您也可以使用if语句在第一个语句之后检查它。例如

IF @@ROWCOUNT <> 0 
  PRINT 'Select statement is returning some rows'
ELSE 
  PRINT 'No rows returned'