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

SQL CASE语句列名未识别报错及语法问题求助

问题解决思路

核心错误分析

  1. 列名不匹配:你提到要处理ratings列,但代码里写的是Size,这就是报错「Invalid column name 'Size'」的直接原因——要么是你混淆了列名,要么表中根本没有Size这个列。
  2. CASE语法错误:THEN后面不需要加SELECT,直接写字符串处理表达式即可;另外你只处理了末尾是'k'的情况,没覆盖'M'的场景。

修正后的代码

场景1:处理ratings列(你的原始需求)

SELECT ratings,
       CASE
           WHEN RIGHT(ratings, 1) IN ('k', 'M') THEN SUBSTRING(ratings, 1, LEN(ratings) - 1)
           ELSE ratings
       END AS cleaned_ratings
FROM googleplaystore

场景2:确实要处理Size列(需先确认表中存在该列)

如果表中确实有Size列,可能是大小写问题(部分数据库区分大小写),调整后代码如下:

SELECT Size,
       CASE
           WHEN RIGHT(Size, 1) IN ('k', 'M') THEN SUBSTRING(Size, 1, LEN(Size) - 1)
           ELSE Size
       END AS cleaned_size
FROM googleplaystore

代码说明

  • RIGHT(列名, 1):提取列值的最后一个字符,判断是否为k或M
  • IN ('k', 'M'):同时匹配两种后缀,简化多条件判断
  • SUBSTRING(列名, 1, LEN(列名)-1):截取从第1位到倒数第2位的字符,移除末尾的k/M
  • ELSE 列名:如果值末尾没有k/M,返回原数值,避免出现NULL
  • AS cleaned_xxx:给处理后的列起别名,方便区分原始值和清洗后的值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 18:58:21