在PostgreSQL结果中连接字符串

时间:2013-06-26 04:01:00

标签: sql postgresql string-concatenation

我有一个像这样的SQL查询:

SELECT DISTINCT(id) FROM users WHERE ...

我希望显示结果:

user=12355
user=78949
user=9898
user=489891

基本上以“user =”为前缀。是否可以使用PostgreSQL执行此操作?我尝试使用STRING_AGG('user=', DISTINCT(id)),但在DISTINCT(id)上收到错误。有什么想法吗?

4 个答案:

答案 0 :(得分:3)

您应该可以使用||进行字符串连接:

SELECT DISTINCT('user=' || id) 
FROM users 
WHERE ...

这也可能有用:

http://www.postgresql.org/docs/current/static/functions-string.html

答案 1 :(得分:3)

我会使用普通的GROUP BY

SELECT format('user=%s',id)
FROM users
GROUP BY id;

http://sqlfiddle.com/#!1/39727/3

这比在字符串连接上使用DISTINCT要高效得多。

答案 2 :(得分:3)

您收到string_agg()错误消息的唯一原因是您忘记了第二个参数,这是必需的。这个非常简单的查询就可以了:

SELECT string_agg('user=' || id, E'\n')
FROM   users 
WHERE  ...

E'\n' ..换行符

使用您问题中的字符串生成 一行
您不需要DISTINCTGROUP BY,除非您在id中有重复项 - 在这种情况下您需要子查询:

SELECT string_agg('user=' || id, E'\n')
FROM  (SELECT id FROM users GROUP BY id) x

答案 3 :(得分:1)

简单地 从用户

中选择concat('user =',id)