2013-03-01 87 views
1

我有表2列:SQL CASE SUBQUERY COUNT

UID NAME 
----------- 
111 AAA 
222 BBB 

客户将进入的名字,我要检索与各自的价值UID。如果名称不会出现在行中,它必须检索000,而不是像没有行。

我想写这样的查询:

SELECT 
    CASE UID 
     WHEN Count(*) = 0 THEN '000' 
     ELSE UID 
    END 
FROM table1 
WHERE NAME ='XXX' 

请帮我在这方面。在此先感谢...

回答

0

试试这个

select case 
      when max(id) is null then 
      0 
      else 
      max(id) 
     end 
    from table1 
where name = 'b' 
1

如果UID是一个整数,那么你就需要采取强制转换考虑到:

select coalesce(cast(max(uid) as char(3)), '000') 
from table1 
where name = 'XXX' 

该演员的目的是为了UID的类型,这在你的例子中似乎是char(3)。

当没有匹配的行时,max()函数返回NULL。 coalesce()将其转换为您正在查找的值。