为什么这个案例陈述不起作用?我的表定义如下。当M =" M"我希望案例返回true。如果不是,则为假。使用此CASE语句似乎看起来不对,但这是简单的case语句。但我认为可以根据需要提供尽可能多的WHEN值,但在这种情况下只有True或False,并且似乎没有任何不同。
输入应该是行中的所有M列。我期望输出是一行,因为我只有一行在列中有一个M值。在这种情况下,我不确定case语句是否应该返回false。
CASE M = "M <-- is this is what the criteria is based on
我发现从下面的帖子中并非如此。当我意味着这看起来不正确时,我指的是两个代码的WHEN部分
WHEN true THEN something
看起来不像通常那样。
代码:
select CASE M = "M"
WHEN true THEN "PPP"
WHEN false THEN "False -- Look Again!"
ELSE "Not Found"
END
from Bat;
图像:
新守则:
select *,
CASE
WHEN M = 'M' THEN
Case
when O = 'O' then 'you found a double (MM)' <--Compiles but does not show result
End
WHEN M is null THEN 'False -- Look Again!'
END as 'What is this value'
from Bat;
这解决了第一个问题,但你可以嵌入案例陈述N deep我会这么认为,如果我再次搜索O,它应该返回一个正确的。但第一种情况只返回一条记录。所以我的第二个案例必须在记录中搜索正确。
答案 0 :(得分:0)
写这个的正常方法是:
select (CASE WHEN M = 'M' THEN 'PPP'
WHEN M <> 'M' THEN 'False -- Look Again!'
ELSE 'Not Found'
END)
from Bat;
或:
select (CASE WHEN M is null then 'Not Found'
WHEN M = 'M' THEN 'PPP'
ELSE 'False -- Look Again!'
END)
from Bat;
如果我不得不猜测,你的版本对NULL
值有意想不到的行为,但很难说不知道你的期望或它在做什么。
答案 1 :(得分:0)
像这样改变
select CASE
WHEN M = 'M' THEN 'PPP'
WHEN M is null THEN 'False -- Look Again!'
ELSE "Not Found"
END
from Bat;