postgresql 如何将列中字符串转换为数组,然后查询数组中的特定位置?

qv7cva1a  于 2023-10-18  发布在  PostgreSQL
关注(0)|答案(3)|浏览(286)

因此,我想使用string_to_array将此字符串转换为数组,然后查询第三个逗号值。
我有这样的想法

SELECT * FROM table1 WHERE string_to_array(data1, ',')[2] = '2'

但这似乎不起作用。有人有什么建议吗?

o2rvlv0m

o2rvlv0m1#

获取第三个元素:

SELECT *, elements[3] as third_element
FROM table1
  CROSS JOIN string_to_array(data1, ',') as elements

查询第三个元素:

SELECT *
FROM table1
  CROSS JOIN string_to_array(data1, ',') as elements
where elements[3]::varchar = '2'

注意:第一个元素位于位置1(不是0)
Demo here

mwg9r5ms

mwg9r5ms2#

你的查询不起作用,因为数组元素在PostgreSQL中是基于1的,而不是像许多其他编程语言那样基于0的。
尝试以下代码,我将查询改为查找string_to_array数组的第三个成员等于'2'的行:

SELECT *
FROM table1
WHERE (string_to_array(data1, ','))[3] = '2';

希望它能起作用:)

a2mppw5e

a2mppw5e3#

Postgres中的数组索引从1开始,而不是0,所以要获得第三个元素,你必须使用索引3,尝试修改你的查询;

SELECT * FROM table1 WHERE string_to_array(data1, ',')[3] = '2';

相关问题