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
相关产品推荐
相关产品推荐

