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

PostgreSQL 11如何将CASE与VARIADIC结合作为FORMAT()的输入

问题解答

错误原因

VARIADIC 是函数调用时的参数修饰符,不能作为表达式的一部分出现在CASE分支的返回值中,这就是原写法报语法错误的核心原因。

正确写法

你只需要把VARIADIC修饰符移动到整个CASE表达式的外层即可,示例如下:

SELECT FORMAT('Hello %s, I am %s.',
  VARIADIC CASE
    WHEN 1 = 1 THEN ARRAY['John', 'Paul']
    ELSE ARRAY['Mary', 'Elli']
  END
);

执行后输出结果为:

Hello John, I am Paul.

逻辑说明

该写法完全符合你的需求:

  • 无需为每个占位符单独编写重复的CASE判断
  • 无需把长格式化字符串重复写在多个CASE分支里
  • 兼容PostgreSQL 11及以上版本的语法规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 13:06:07