我有一個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,並指定你想要發生的事情。) –