在查询基于以下参数对表中的条目进行分类时运行嵌套大小写。运行代码时,Null
的输出会返回select case when a+b > c and b+c > a and c+a > b then
case
when a=b|a=c|b=c then "Isosceles"
when a=b and a=c and b=c then "Equilateral"
when a<>b and b<>c and a<>c then "Scalene"
end
else "Not A Triangle"
end
from triangles
。我不知道为什么。我正在比较整数a,b和c,它们代表三角形的每个不同整数的列。
有什么建议吗?
{{1}}
答案 0 :(得分:1)
第一个问题:对||
使用双管OR
而不是单个管道。
第二个问题:在Equilateral
之前使用Isosceles
条件
因此,如果您的身边是2
,2
和2
,那么根据您的逻辑,Isosceles
条件首先满足。所以永远不会将它等同于Equilateral
新答案:事实上,您不需要2个案例陈述。请改用
http://rextester.com/PTDI48631
select t.*,
case when not (a+b > c and b+c > a and c+a > b)
then "Not A Triangle"
when (a=b and a=c and b=c)
then "Equilateral"
when (a=b or a=c or b=c)
then "Isosceles"
else "Scalene"
end as Triangle_type
from triangle t;
上一个答案: http://rextester.com/ELLB75736
select t.*,
case when a+b > c and b+c > a and c+a > b
then
(case
when a=b and a=c and b=c then "Equilateral"
when a=b or a=c or b=c then "Isosceles"
when a<>b and b<>c and a<>c then "Scalene"
end
)
else
"Not A Triangle"
end as Triangle_type
from triangle234 t
答案 1 :(得分:0)
select case when a+b > c and b+c > a and c+a > b then
case
when (a=b & a=c)|(a=b & b=c) | (a=c & b=c) then "Isosceles"
when a=b and a=c and b=c then "Equilateral"
when a<>b and b<>c and a<>c then "Scalene"
Else "Triangle"
end
else "Not A Triangle"
end
from triangles
试试上面的代码。我认为您错过else
内部WHEN
。
希望这会有所帮助。