在字符postgresql的第n个实例之后截断字段

时间:2016-11-02 01:14:33

标签: postgresql

我的字段看起来像这样:

id     field
1      aaa,bbb,ccc,ddd,eee,ffff

我希望选择字段直到逗号的第三个实例。它看起来像这样:

aaa,bbb,ccc

这可以在postgresql中使用吗?

2 个答案:

答案 0 :(得分:1)

首先,您不应该在字符串字段中存储逗号分隔值。但话虽如此,一种方法使用split_part()

select split_part(field, ',', 1) || ',' || split_part(field, ',', 2) || ',' || split_part(field, ',', 3)

答案 1 :(得分:1)

我更喜欢在这里使用正则表达式。与您的固定模式匹配的正则表达式是:

^(\w+,\w+,\w+).*$

使用regexp_matches,这将成为:

select regexp_matches(field, E'^(\\w+,\\w+,\\w+).*$')
from yourTable

注意:我在我的本地Postgres上测试了这个查询,它运行正常,q.v。这个屏幕截图

enter image description here