it-swarm.com.de

Prüfen Sie, ob eine SQL Select-Anweisung keine Zeilen zurückgibt

Ich habe eine Auswahlaussage 

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

Ich möchte prüfen, ob diese Anweisung 0 Zeilen zurückgibt. Ich habe versucht, ISNULL und IFNULL zu verwenden, aber mir scheint etwas zu fehlen.

19
Islam

Um herauszufinden, ob keine übereinstimmenden Zeilen vorhanden sind, können Sie NOT EXISTS verwenden. Was kann effizienter sein, als alle übereinstimmenden Zeilen zu zählen

IF NOT EXISTS(SELECT * FROM ...)
BEGIN
PRINT 'No matching row exists'
END
41
Martin Smith
SELECT    COUNT(*) 
FROM         dbo.CustomerBalance 
WHERE     (CustomerID = 1) AND (MarchentID = @MerchantId) 

Wenn du 0 bekommst, hast du 0. :)

7

Wenn dies SQL Server ist, versuchen Sie @@ ROWCOUNT .

7
Dave

versuche dies:

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

Sie können @@ ROWCOUNT verwenden. Für z. 

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

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

Sie erhalten 0, wenn die erste Anweisung keine Zeilen zurückgibt. Sie können auch die if-Anweisung verwenden, um dies direkt nach der ersten Anweisung zu überprüfen. z.B. 

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

Könnte auch eine äußere ISNULL-Prüfung verwendet werden?

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