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

SQL中按条件替换指定列字段值的正确查询写法

问题场景

当前使用的示例数据表tbl数据如下:

ID      fruit 
first   apl
second  org
third   bnna

需求为提取fruit列中值为apl、bnna的记录,分别将两个值替换为apple和banana,期望输出结果如下:

ID      fruit 
first   apple
third   banana
原写法错误说明

你之前编写的SQL存在两处核心问题:

  • 列别名语法顺序错误:AS关键字的标准用法是计算表达式 AS 列别名,原语句把替换函数写在了AS后方,属于语法错误
  • 重复选取了两次fruit字段,即使修正语法,也会返回两列独立的替换结果,不符合单fruit列的输出要求
    原错误SQL参考:
select ID, fruit as replace(fruit, "apl", "apple"), fruit as replace(fruit, "bnna", "banana")
from tbl
where fruit = 'apl' or
      fruit = 'bnna'
正确实现方案

写法1:CASE WHEN条件匹配(全数据库兼容,推荐使用)

通过条件分支精准匹配字段值做替换,逻辑清晰无歧义,后续新增替换规则也方便维护:

SELECT 
  ID,
  CASE fruit
    WHEN 'apl' THEN 'apple'
    WHEN 'bnna' THEN 'banana'
  END AS fruit
FROM tbl
WHERE fruit IN ('apl', 'bnna');

写法2:嵌套REPLACE函数(适配当前筛选场景,写法简洁)

由于WHERE条件已经过滤出仅包含apl、bnna的记录,嵌套替换函数不会出现误替换问题,写法更简短:

SELECT
  ID,
  REPLACE(REPLACE(fruit, 'apl', 'apple'), 'bnna', 'banana') AS fruit
FROM tbl
WHERE fruit IN ('apl', 'bnna');

两种写法执行后返回结果均与预期完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 15:06:21