2012-08-08 36 views
0

我試圖解決以下問題:SQL更換空SQL SELECT與字

我想作一個選擇,當結果是空的,應該與「空」 否則結果被替換應該在那裏。 這是我的嘗試:

select case (count*) 
     when 0 then 'empty' 
     ELSE 
     THEVALUEOFTHECOLUM 
END AS RESULT 

from Database.table where CarID = 12; 

感謝您的每一個評論。

+0

http://stackoverflow.com/questions/7687717/sql-2005-can-i-use-keyword -like-in-case-statement – Paul 2012-08-08 13:07:22

回答

2

這應該工作,但您可能不得不根據所使用的數據庫來第二次出現轉換的COUNT(*)到VARCHAR:

SELECT 
    CASE WHEN COUNT(*) = 0 
    THEN 'empty' 
    ELSE COUNT(*) -- CONVERT, TO_CHAR, ... 
    END AS result 
FROM Database.table where CarID = 12; 
+0

這將只會返回計數,如果您想要將需要的列替換爲MAX(collname)的第二個計數,但那隻會返回一個條目。 – Chris 2012-08-08 13:07:32

+0

MAX爲什麼需要?爲什麼不使用collname? – 2012-08-08 13:27:42

+0

MAX是需要的,因爲否則想要返回一個結果。你可以使用任何聚合函數 – Chris 2012-08-08 15:56:39

0
SELECT 
CASE 
    WHEN Q.countvalue = 0 THEN 'Empty' 
    ELSE CONVERT(NVARCHAR(10), Q.countvalue) 
END AS RESULT 
FROM 
    (
    SELECT COUNT(*) AS countvalue 
    FROM Database.table WHERE CarID = 12 
    ) AS Q 
0

這種感覺哈克給我,但它會返回列數據。 這不是一個查詢,但它仍然是setwise。

declare @tmp table (id int) 
declare @cnt int 
insert into @tmp select col from table 
select @cnt = count(*) from @tmp 
if(@cnt = 0) 
begin 
    select 'empty' 
end 
else 
begin 
    select * from @tmp 
end 
+0

我想要所有的柱子,我怎樣才能使你的代碼工作?需要一個程序嗎? – 2012-08-16 08:38:49

+0

@John我不明白這個問題。你想要什麼列? – Chris 2012-08-16 13:44:46

0

是否可以使用一個查詢進行編碼? 如果沒有結果 - 「沒有結果發現 其他 顯示所有結果,而不是隻有一個

declare @tmp table (id int) 
declare @cnt int 
insert into @tmp select col from table 
select @cnt = count(*) from @tmp 
if(@cnt = 0) 
begin  
select 'empty' 
end 
else 
begin  
select * from @tmp 
end