You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

判断三角形类型的SQL代码未输出预期结果,是否存在错误?

代码问题说明

你的代码存在逻辑顺序错误,问题出在CASE语句的判断优先级设置错误:

  • CASE语句会按从上到下的顺序匹配条件,命中第一个符合的条件后就会直接返回结果,不会继续校验后续条件
  • 你当前把「三角形类型判断」放在了「是否为三角形的合法性判断」前面,会导致本身不满足三角形构成条件、但有两边长度相等的边长组被误判为等腰三角形
    举个实际例子:边长为2、2、5的组合,两边之和2+2=4<5,本身不属于三角形,但代码会先匹配到A=B的条件,错误返回Isosceles,不会走到后续的非三角形判断逻辑。
修复方案

把三角形合法性判断放到最优先的位置,调整后的代码如下:

SELECT
  CASE
   WHEN ((A+B) <= C) OR ((A+C) <= B) OR ((C+B) <= A)  THEN 'Not A Triangle'
   WHEN (A = B) AND (B = C) THEN 'Equilateral'
   WHEN (A = B) OR (B = C) OR (A = C) THEN 'Isosceles' 
   ELSE 'Scalene'
  END 
FROM TRIANGLES;

注:此处将原判断的<调整为<=,是因为两边之和等于第三边时属于退化三角形,不符合普通三角形的构成要求,你可以根据实际业务规则调整边界条件。

内容的提问来源于stack exchange,提问作者Dexter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 19:27:05