Ответ 1
Чтобы узнать, существуют ли подходящие строки, вы можете использовать NOT EXISTS
. Что может быть более эффективным, чем подсчет всех соответствующих строк
IF NOT EXISTS(SELECT * FROM ...)
BEGIN
PRINT 'No matching row exists'
END
У меня есть оператор select
SELECT QBalance
FROM dbo.CustomerBalance
WHERE (CustomerID = 1) AND (MarchentID = @MerchantId)
Я хочу проверить, возвращает ли этот оператор 0 строк. Я пытался использовать ISNULL и IFNULL, но кажется, что я чего-то не хватает.
Чтобы узнать, существуют ли подходящие строки, вы можете использовать NOT EXISTS
. Что может быть более эффективным, чем подсчет всех соответствующих строк
IF NOT EXISTS(SELECT * FROM ...)
BEGIN
PRINT 'No matching row exists'
END
SELECT COUNT(*)
FROM dbo.CustomerBalance
WHERE (CustomerID = 1) AND (MarchentID = @MerchantId)
Если вы получите 0, вы получите 0.:)
Если это SQL Server, попробуйте @@ROWCOUNT.
попробуйте следующее:
SELECT ISNULL(QBalance, 'ReplaceValue')
FROM dbo.CustomerBalance
WHERE (CustomerID = 1) AND (MarchentID = @MerchantId)
Можно также использовать внешнюю проверку 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, чтобы проверить это сразу после первого утверждения. например
IF @@ROWCOUNT <> 0
PRINT 'Select statement is returning some rows'
ELSE
PRINT 'No rows returned'