如何用撇号/单引号替换逗号?

时间:2016-03-01 10:24:38

标签: sql postgresql sql-in

如何在pgsql select query中用逗号/单引号替换逗号? 我目前的疑问是:

SELECT array_to_string(array_agg(districtname), ', ') as dnames
FROM districts
where id in ('' || Replace((select districtIds from tblmtr where id = 1), ',' , ''',''') || '');

它返回null 表tblmtr中的ID与此类似234

当我将其更改为234时,会返回正确的结果。
结果应如下所示:district1name,district2name,district3name

1 个答案:

答案 0 :(得分:1)

这里有几件事情并不理想:

虽然您遇到了不幸的设计,但请将逗号分隔的字符串动态转换为数组并使用ANY construct
你忽略了提供你的表定义,所以做了一些假设。

SELECT array_to_string(array_agg(d.districtname), ', ') AS dnames
FROM   tblmtr    t 
JOIN   districts d ON d.id = ANY (string_to_array(t.districtIds, ','))
WHERE  t.id = 1;

或者:

SELECT ARRAY (
   SELECT d.districtname
   FROM   tblmtr    t 
   JOIN   districts d ON d.id = ANY (string_to_array(t.districtIds, ','))
   WHERE  t.id = 1
   ) AS dnames;