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

Isl*_*lam 25 sql-server stored-procedures

我有一个选择声明

SELECT     QBalance
FROM         dbo.CustomerBalance
WHERE     (CustomerID = 1) AND (MarchentID = @MerchantId)
Run Code Online (Sandbox Code Playgroud)

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

Mar*_*ith 48

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

IF NOT EXISTS(SELECT * FROM ...)
BEGIN
PRINT 'No matching row exists'
END
Run Code Online (Sandbox Code Playgroud)


Dav*_*ave 10

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


Stu*_*rth 7

SELECT    COUNT(*) 
FROM         dbo.CustomerBalance 
WHERE     (CustomerID = 1) AND (MarchentID = @MerchantId) 
Run Code Online (Sandbox Code Playgroud)

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


小智 6

您可以使用@@ROWCOUNT。例如

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

--This will return no of rows returned by above statement.
SELECT @@ROWCOUNT
Run Code Online (Sandbox Code Playgroud)

如果第一个语句不返回任何行,您将得到 0。您还可以使用 if 语句来检查第一个语句之后的情况。例如

IF @@ROWCOUNT <> 0 
  PRINT 'Select statement is returning some rows'
ELSE 
  PRINT 'No rows returned' 
Run Code Online (Sandbox Code Playgroud)