在PostgreSQL SELECT 查询中连接字符串列
在PostgreSQL中,直接在SELECT查询中连接字符串列并非易事。考虑以下示例:
<code class="language-sql">select a || b from foo;</code>
其中a和b是character(2)类型的列。这将返回NULL,而不是预期中的a和b值的连接结果。
连接字符串列最简单的解决方案是将至少一列强制转换为text类型:
<code class="language-sql">SELECT a::text || b AS ab FROM foo;</code>
或者,您可以使用concat_ws()
函数,它可以接受任意数量的参数并忽略NULL值:
<code class="language-sql">SELECT concat_ws(', ', a, b) AS ab FROM foo;</code>
如果您不需要分隔符,可以使用concat()
函数:
<code class="language-sql">SELECT concat(a, b) AS ab FROM foo;</code>
concat()
和concat_ws()
都是易变函数,因此不适合用于索引或生成的列。如果需要不变性,您可以创建一个自定义的不变函数。
请注意,
运算符在Postgres中不是有效的字符串连接运算符。它是Microsoft在其产品中特有的添加。
以上是如何在 PostgreSQL SELECT 查询中连接字符串列?的详细内容。更多信息请关注PHP中文网其他相关文章!