我有一个选择陈述
SELECT QBalance
FROM dbo.CustomerBalance
WHERE (CustomerID = 1) AND (MarchentID = @MerchantId)
我想检查该语句是否返回0行。我试图使用ISNULL和IFNULL,但似乎我错过了一些东西。
答案 0 :(得分:41)
要确定是否存在匹配的行,您可以使用NOT EXISTS
。这比计算所有匹配行更有效
IF NOT EXISTS(SELECT * FROM ...)
BEGIN
PRINT 'No matching row exists'
END
答案 1 :(得分:7)
SELECT COUNT(*)
FROM dbo.CustomerBalance
WHERE (CustomerID = 1) AND (MarchentID = @MerchantId)
如果你得到0,你得到0.:)
答案 2 :(得分:7)
如果这是SQL Server,请尝试@@ROWCOUNT。
答案 3 :(得分:1)
试试这个:
SELECT ISNULL(QBalance, 'ReplaceValue')
FROM dbo.CustomerBalance
WHERE (CustomerID = 1) AND (MarchentID = @MerchantId)
答案 4 :(得分:0)
还可以使用外部ISNULL检查吗?
SELECT ISNULL((
SELECT QBalance
FROM dbo.CustomerBalance
WHERE (CustomerID = 1) AND (MarchentID = @MerchantId)), 0)
答案 5 :(得分: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'