postgresql 获取从“string_to_array()”函数返回的数组的第N个元素

bvk5enib  于 2024-01-07  发布在  PostgreSQL
关注(0)|答案(3)|浏览(244)

我正在寻找一种方法来访问数组的第N个元素,这是PostgreSQL中string_to_array()函数的结果。例如,
假设一个单元格包含字符串值:“A simple example”。如果我使用string_to_array()函数,我将有一个三个字符串的数组作为('A','simple','example')。现在,不存储(我的意思是,在运行中)我想访问这个数组的第二个元素,它是'simple'。
在我的谷歌搜索中,我看到了一个访问数组最后一个元素的例子,但这几乎没有解决我的问题。
有办法做到这一点吗?

mu0hgdu0

mu0hgdu01#

select (string_to_array('1,2,3,4',','))[2];

字符串

b5lpy0ml

b5lpy0ml2#

您可以使用string_to_array()以下列方式取得数组的元素:

SELECT string_to_array('1,2,3,4,5', ',')::INTEGER[]; -- {1,2,3,4,5}
SELECT (string_to_array('1,2,3,4,5', ',')::INTEGER[])[2]; -- 2
SELECT (string_to_array('1,2,3,4,5', ',')::INTEGER[])[0]; -- NULL;
SELECT (string_to_array('1,2,3,4,5', ',')::INTEGER[])[2:4]; -- {2,3,4}
SELECT (string_to_array('1,2,3,4,5', ',')::INTEGER[])[:4]; -- {1,2,3,4}
SELECT (string_to_array('1,2,3,4,5', ',')::INTEGER[])[2:]; -- {2,3,4,5}
SELECT (string_to_array('1,2,3,4,5', ',')::INTEGER[])[:]; -- {1,2,3,4,5}

字符串

  • 备忘录:
  • 如果省略INTEGER[],则下面的数组为TEXT[]类型,不能进行计算。
  • 不要在string_to_array()的第一个参数中放置任何空格,否则由,分隔的值中会有空格。
  • 一个数组包含[1]中的值,但不包含[0]中的值,因此[0]返回NULL;
  • The doc详细介绍了数组。

此外,您还可以通过以下方式获取数组的元素:

SELECT '{1,2,3,4,5}'::INTEGER[]; -- {1,2,3,4,5}
SELECT ('{1,2,3,4,5}'::INTEGER[])[2]; -- 2
SELECT ('{1,2,3,4,5}'::INTEGER[])[0]; -- NULL;
SELECT ('{1,2,3,4,5}'::INTEGER[])[2:4]; -- {2,3,4}
SELECT ('{1,2,3,4,5}'::INTEGER[])[:4]; -- {1,2,3,4}
SELECT ('{1,2,3,4,5}'::INTEGER[])[2:]; -- {2,3,4,5}
SELECT ('{1,2,3,4,5}'::INTEGER[])[:]; -- {1,2,3,4,5}


或者:

SELECT ARRAY[1,2,3,4,5]::INTEGER[]; -- {1,2,3,4,5}
SELECT (ARRAY[1,2,3,4,5]::INTEGER[])[2]; -- 2
SELECT (ARRAY[1,2,3,4,5]::INTEGER[])[0]; -- NULL;
SELECT (ARRAY[1,2,3,4,5]::INTEGER[])[2:4]; -- {2,3,4}
SELECT (ARRAY[1,2,3,4,5]::INTEGER[])[:4]; -- {1,2,3,4}
SELECT (ARRAY[1,2,3,4,5]::INTEGER[])[2:]; -- {2,3,4,5}
SELECT (ARRAY[1,2,3,4,5]::INTEGER[])[:]; -- {1,2,3,4,5}

r3i60tvu

r3i60tvu3#

添加我正在寻找的示例:
选择product_ids[1] from comments where board_name = '12345678';

相关问题