pg中多值列_在PostgreSQL中使用CASE一次影响多个列

本文介绍了在PostgreSQL中如何使用CASE语句一次性影响多个列,包括通过LEFT JOIN结合COALESCE设置后备值,以及PostgreSQL特有的展开数组和分解行类型的方法。示例展示了在不同情况下如何灵活应用CASE表达式处理多值列。
摘要由CSDN通过智能技术生成

1.标准SQL:LEFT JOIN单行值

您可以使用条件(从而评估一次),以LEFT JOIN的一行值.然后,您可以使用COALESCE()为每列添加后备值.

这种语法变体比较简单,速度更快,具有多个值 – 对于昂贵/冗长的条件特别有趣:

SELECT COALESCE(x.txt1, trim(r2.team_name)) AS testing_testing

, COALESCE(x.txt2, trim(r2.normal_data)) AS test_response

, COALESCE(x.txt3, trim(r2.normal_data_2)) AS another_example

FROM rtp

JOIN rtd2 r2 ON -- missing context in question

LEFT JOIN (

SELECT 'testing'::text AS txt1

, 'test example'::text AS txt2

, 'test example #2'::text AS txt3

) x ON rtp.team_id = rtp.sub_team_id;

由于派生表x由单行组成,无需进一步条件即可进行连接.

子查询中需要显式类型转换.我在示例中使用文本(这也是字符串文字的默认值).使用您的实际数据类型.语法快捷方式value :: type是Postgres特定的,对于标准SQL使用cast(值AS类型).

如果条件不为TRUE,x中的所有值都为NULL,并且COALESCE进入.

或者,由于所有候选值来自特定情况下的表rtd2,LEFT使用原始CASE条件加入rtd2,并将CROSS JOIN加入到具有默认值的行中:

SELECT COALESCE(trim(

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值