Подтвердить что ты не робот

Убедитесь, что оператор SQL Select не возвращает строк

У меня есть оператор select

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

Я хочу проверить, возвращает ли этот оператор 0 строк. Я пытался использовать ISNULL и IFNULL, но кажется, что я чего-то не хватает.

4b9b3361

Ответ 1

Чтобы узнать, существуют ли подходящие строки, вы можете использовать NOT EXISTS. Что может быть более эффективным, чем подсчет всех соответствующих строк

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

Ответ 2

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

Если вы получите 0, вы получите 0.:)

Ответ 3

Если это SQL Server, попробуйте @@ROWCOUNT.

Ответ 4

попробуйте следующее:

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

Ответ 5

Можно также использовать внешнюю проверку ISNULL?

SELECT ISNULL((
SELECT QBalance
FROM   dbo.CustomerBalance
WHERE  (CustomerID = 1) AND (MarchentID = @MerchantId)), 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

Вы получите 0, если первый оператор не вернет строки. Вы также можете использовать оператор if, чтобы проверить это сразу после первого утверждения. например

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