2012-08-08 67 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