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

SQL Server Express中CASE WHEN更新列值的代码修正请求

修复你的SQL Server UPDATE语句问题

没问题,我帮你排查下这段SQL的问题,顺便给你正确的写法:

原代码的错误原因

  • CASE WHEN语法误用:你在每个THEN后面错误地写了LOYAL_TO = 'xxx',CASE语句的作用是返回一个具体值,直接写要赋值的内容即可,不需要重复列名和等于号。
  • 多余的结尾关键字:语句最后多了一个case,CASE语句的正确闭合只需要END。
  • 不必要的FROM子句:针对单表的UPDATE操作,SQL Server不需要额外加from originals,反而可能造成语法混淆。

正确的SQL查询

UPDATE originals 
SET LOYAL_TO = CASE 
    WHEN last_name = 'Mikelson' THEN 'KLAUS'
    WHEN first_name = 'KOL' THEN 'NO ONE'
    WHEN first_name = 'DAVINA' THEN 'MARCEL'
    WHEN first_name = 'camille' THEN 'MARCEL'
    WHEN first_name = 'vincent' THEN 'EVERYONE'
    WHEN first_name = 'josh' THEN 'MARCEL'
    WHEN FIRST_NAME = 'JACKSON' THEN 'HAYLEY'
    WHEN FIRST_NAME = 'Hollow' THEN 'DEMON'
    -- 可选:如果想让不满足以上条件的行保持原数值,添加下面的ELSE
    ELSE LOYAL_TO
END;

额外说明

如果你的表中有不匹配上述所有条件的行,建议加上ELSE LOYAL_TO,这样这些行的LOYAL_TO值不会被改为NULL;如果确实希望不匹配的行设为NULL,可以去掉这个ELSE部分。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:57:07