我有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'
请在这方面帮助我。提前谢谢......
答案 0 :(得分:1)
如果UID是整数,那么您需要考虑强制转换:
select coalesce(cast(max(uid) as char(3)), '000')
from table1
where name = 'XXX'
强制转换属于UID类型,在您的示例中似乎是char(3)。
如果没有匹配的行,则max()
函数返回NULL。 coalesce()
将此值转换为您要查找的值。
答案 1 :(得分:0)
试试这个
select case
when max(id) is null then
0
else
max(id)
end
from table1
where name = 'b'
答案 2 :(得分: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