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

Sql server 检查SQL Select语句是否不返回任何行,sql-server,stored-procedures,Sql Server,Stored Procedures,我有一个select语句 SELECT QBalance FROM dbo.CustomerBalance WHERE (CustomerID = 1) AND (MarchentID = @MerchantId) 我想检查该语句是否返回0行。我尝试使用ISNULL和IFNULL,但似乎缺少了一些内容。尝试以下方法: SELECT ISNULL(QBalance, 'ReplaceValue') FROM dbo.CustomerBala

我有一个select语句

SELECT     QBalance
FROM         dbo.CustomerBalance
WHERE     (CustomerID = 1) AND (MarchentID = @MerchantId)
我想检查该语句是否返回0行。我尝试使用ISNULL和IFNULL,但似乎缺少了一些内容。

尝试以下方法:

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

如果你得到了0,你就得到了0

如果这是SQL Server,请尝试。

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

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

也可以使用外部ISNULL检查吗

SELECT ISNULL((
SELECT QBalance
FROM   dbo.CustomerBalance
WHERE  (CustomerID = 1) AND (MarchentID = @MerchantId)), 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语句来检查它。e、 g

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

空值是指没有行,还是QBalance中的实际空值?如果您得到null,您希望做什么?为了将来帮助您,没有行与null不同。您应该编辑此问题,将其更改为无行,并指定希望发生的情况。好的,谢谢,这就是我所做的,它工作正常。声明@NULL int SET@NULL=SELECT COUNT QBalance FROM dbo.CustomerBalance,其中CustomerID=@CustomerID和MarchentID=@MerchantId如果@NULL=0开始插入[CustomerBalance][CustomerID],[MarchentID],[QBalance],[InitialDate]VALUES@CustomerID,@MerchantId,@CodeQPoints,GETDATE END ELSE更新[客户平衡]设置QBalance=@CodeQPoints+QBalance,InitialDate=GETDATE,其中dbo.CustomerBalance.CustomerID=@CustomerID和dbo.CustomerBalance.MarchentID=@merchantid非常简单,非常简单nice@Jordan_Walters-但它不起作用。如果不存在行,则没有可应用ISNULL的值。
IF @@ROWCOUNT <> 0 
  PRINT 'Select statement is returning some rows'
ELSE 
  PRINT 'No rows returned'