1

我有 2 col 的桌子:

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

客户将输入名称,我必须检索具有相应值的 UID。如果名称不会出现在行中,它必须检索 000,而不是像没有行一样。

我正在尝试编写这样的查询:

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

请在这方面帮助我。提前致谢...

4

3 回答 3

1

如果 UID 是整数,则需要考虑强制转换:

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

强制转换旨在成为 UID 的类型,在您的示例中似乎是 char(3)。

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

于 2013-03-01T14:08:53.243 回答
0

尝试这个

select case
           when max(id) is null then
            0
           else
            max(id)
       end
  from table1
 where name = 'b'
于 2013-03-01T12:31:23.513 回答
0

你有错误,以防万一

SELECT case when count(UID) = 0 THEN '000' ELSE UID end FROM table1 where name = 'XXX'

sqlfiddle:http ://www.sqlfiddle.com/#!2/257ea/1

于 2013-03-01T12:33:54.480 回答