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

AWS Redshift Case语句执行异常求助:DBeaver查询未达预期

问题排查与修正

你的查询输出全为rajasthan的核心原因有两个:

1. 多余的WHERE子句过滤了结果集

你的WHERE state ILIKE 'jaipur%'条件会只返回满足该条件的记录,而非所有记录。这就导致最终结果里只有匹配该条件的行,而你需要的是保留所有记录,仅替换其中profile$branch$state为Jaipur的值,因此这个WHERE子句完全多余,应该删除。

2. WHERE子句错误引用SELECT别名

SQL的执行顺序是FROM → WHERE → SELECT,WHERE子句执行时,SELECT中定义的别名state还未生效。如果你的原表中没有名为state的列,这条查询本应报错;若原表存在state列,那你过滤的是原表state列的数据,而非你要处理的profile$branch$state列,逻辑完全偏离预期。


修正后的查询语句

SELECT 
    CASE
        WHEN profile$branch$state = 'Jaipur' THEN 'rajasthan'
        ELSE profile$branch$state
    END AS state
FROM profile_detials

如果需要仅查看被修改的记录和特定其他记录,可调整WHERE子句明确引用原列名,比如:

SELECT 
    CASE
        WHEN profile$branch$state = 'Jaipur' THEN 'rajasthan'
        ELSE profile$branch$state
    END AS state
FROM profile_detials
-- 示例:保留Jaipur相关记录和其他非空记录
WHERE profile$branch$state ILIKE 'jaipur%' OR profile$branch$state IS NOT NULL

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 06:15:00