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

