我有一个select语句检查SQL SELECT语句不返回行
SELECT QBalance
FROM dbo.CustomerBalance
WHERE (CustomerID = 1) AND (MarchentID = @MerchantId)
我要检查如果语句返回0行。我试图使用ISNULL和IFNULL,但似乎我错过了一些东西。
我有一个select语句检查SQL 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)
很简单,很漂亮 –
@Jordan_Walters - 虽然不起作用。如果没有行存在,则没有值应用“ISNULL”。 –
SELECT COUNT(*)
FROM dbo.CustomerBalance
WHERE (CustomerID = 1) AND (MarchentID = @MerchantId)
如果你得到0,你有0 :)
如果这是SQL Server中,尝试@@ROWCOUNT。
要确定是否存在没有匹配的行,可以使用NOT EXISTS
。这可以比计算所有匹配的行更有效
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语句来检查第一条语句之后。例如
IF @@ROWCOUNT <> 0
PRINT 'Select statement is returning some rows'
ELSE
PRINT 'No rows returned'
By Null你是指没有行或QBalance中的实际Null值?如果你得到空值,你想怎么做? –
yes by null我的意思是没有行 – Islam
为了帮助您将来,没有行与null不同。 (你应该编辑这个问题改为No Rows,并指定你想要发生的事情。) –