Postgresql 中 Concat 之前的上层

问题描述 投票:0回答:2

假设有一个名为 cities 的表,其中包含 name 和 country 列,为什么这个查询不起作用?

select
  concat(upper(name, ', ', country)) as location
FROM
  cities;

但是下面那个呢?

select
  upper(concat(name, ', ', country)) as location
FROM
  cities;

我尝试了两种方法,但无法弄清楚为什么第一种方法不起作用,但第二种方法起作用了。

现在如果有两个或更多操作,我如何决定它们的顺序以便查询有效?

postgresql string-concatenation uppercase
2个回答
1
投票

Postgres 的

UPPER()
函数被定义为接受单个字符串输入,而不是多个字符串的 CSV 列表作为输入。显然,您的第一个查询在没有大写的情况下工作,但不能保证 Postgres 甚至应该接受该语法。

第二个版本是正确的,您首先连接,然后将该连接后的字符串作为单个输入传递给

UPPER()
函数。


1
投票

UPPER 函数只接受一个字符串参数。 参考
在第一个查询中,您传递了多个参数,因此会导致错误。
在你的第二个查询中,你将多个参数连接到一个字符串中,然后将它传递给 UPPER,这样就可以了。

© www.soinside.com 2019 - 2024. All rights reserved.