如何从TEXT列PostgreSQL中分离和计算字符串

时间:2016-11-15 13:32:08

标签: sql postgresql

我在Client表中有一个名为“Attachment Name”的字段,其中包含客户端所具有的每个附件的名称,保存名称的方式如下,它以“^”字符开头,然后是文件的名称,当您必须保存另一个文件时,将放置相同的字符。 例如,在客户编号1423中,我们有"^file1^userGuide^file3",在这种情况下,我们有3个文件,File1,userGuide和File3。 我需要的是一种方法来了解只附加一个文件的客户端,或者有多个文件的客户端。

我知道这是存储文件名的一种非常好的方法,但我没有这样做,而不是我改变它的号召。

我一直在用这句话:

Select regexp_split_to_array("attachment_name", E'\\^+') from clients

但我根本无法使它发挥作用。

1 个答案:

答案 0 :(得分:0)

以下计算列表中显示的附件数量:

select unnest(regexp_split_to_array(attachment_name, '[\^]')) as attachment, count(*)
from clients
group by attachment;

编辑:

我回答错了。

如果您只想要一个附件,那么这样的话:

select count(*)
from clients c
where attachment_name not like '^%^%'