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

SQL CASE语句报错‘>’附近语法错误,请求修正条件筛选逻辑

问题分析与解决

你的SQL语句报错是因为CASE表达式的语法错误:CASE的THEN/ELSE分支必须返回具体的字段值或常量,而不是像你写的那样直接放布尔条件判断(>=/<=这类表达式),这不符合SQL语法规范。

根据你的需求(Saleflag=1时显示SalePrice在25-50的结果;否则显示Price在25-50的结果),分两种场景给出正确写法:


场景1:仅筛选出符合条件的记录

如果需要只保留满足条件的行(Saleflag=1时SalePrice在25-50之间,或Saleflag≠1时Price在25-50之间),用WHERE子句做筛选,再通过CASE返回对应价格:

SELECT 
    CASE 
        WHEN Saleflag = 1 THEN SalePrice 
        ELSE Price 
    END AS Price
FROM 
    [Table]  -- 注意:Table是SQL关键字,建议换表名,或用方括号/反引号包裹
WHERE 
    (Saleflag = 1 AND CAST(SalePrice AS DECIMAL) BETWEEN 25 AND 50)
    OR 
    (Saleflag != 1 AND CAST(Price AS DECIMAL) BETWEEN 25 AND 50)

场景2:保留所有行,仅显示符合条件的价格

如果需要返回所有行,但仅在价格符合条件时显示对应值,不符合则显示NULL:

SELECT 
    CASE 
        WHEN Saleflag = 1 AND CAST(SalePrice AS DECIMAL) BETWEEN 25 AND 50 THEN SalePrice
        WHEN Saleflag != 1 AND CAST(Price AS DECIMAL) BETWEEN 25 AND 50 THEN Price
        ELSE NULL
    END AS Price
FROM 
    [Table]

额外注意事项

  • 比较数值时直接用数字(25/50),不要加引号,避免不必要的类型转换问题。
  • 尽量不要用Table作为表名,这是SQL保留关键字,容易引发语法冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 19:40:28