在 PostgreSQL 中,将两个现有列合并为一个新列的任务经常出现。虽然熟悉的 concat() 函数是一种常见方法,但让我们探索其他替代方法以及它们何时表现出色。
如果您确保您的列永远不会包含空值,传统的串联运算符 ||仍然是最有效的选择。只需编写:
SELECT col_a || col_b;
但是,当可能出现空值时,concat() 会大放异彩。与 || 不同,concat() 保证非空结果,即使它的所有参数都为空。其语法:
SELECT concat(col_a, col_b);
如果 null 值会破坏您所需的输出,请考虑将 COALESCE 与 || 结合使用。 :
SELECT COALESCE(col_a, '') || COALESCE(col_b, '');
此方法确保如果任一列结果为空字符串为 null。
处理多个空列或复杂表达式时,concat() 特别有用。例如:
SELECT CASE WHEN (col_a, col_b) IS NULL THEN NULL ELSE concat(col_a, col_b) END;
对于需要在合并元素之间插入分隔符的情况,concat_ws() 提供了一种方便的方法选项:
SELECT concat_ws(' - ', col_a, col_b, col_c);
请注意,虽然 concat() 和 concat_ws() 通常是稳定的函数,但它们可能会触发依赖于区域设置的数据类型输出函数。这可能会影响它们在索引表达式中的直接使用。
以上是PostgreSQL中如何高效地合并列?的详细内容。更多信息请关注PHP中文网其他相关文章!