postgres从文本中提取整数数组

时间:2018-11-14 09:06:16

标签: sql arrays json postgresql

我有以下postgresql语句:

SELECT 1 = ANY( jsonb_array_elements_text('[2, 1, 3]') );

基本上,我有一个字符串,其中包含一个用逗号分隔的整数数组,例如:[1, 2, 3],有时该数组也可能是空的,例如:[]。现在,我想编写一个查询(作为更大查询的一部分),在这里我可以找出元素是否与文本中的任何整数匹配。例如:

SELECT 1 = ANY( jsonb_array_elements_text('[2, 1, 3]') ); -- Should return true
SELECT 1 = ANY( jsonb_array_elements_text('[]') ); -- should return false

但是,以上查询失败,并显示一条错误消息:

ERROR:  op ANY/ALL (array) requires array on right side
LINE 1: SELECT 1 = ANY( jsonb_array_elements_text('[2, 1, 3]') );

有什么帮助我如何从文本中提取整数数组,以便可以在联接条件下使用它?

如果有问题,我正在使用Postgres 9.4。

1 个答案:

答案 0 :(得分:1)

我找到了。答案是:

SELECT 1 IN (SELECT json_array_elements('[2, 1, 3]')::text::int);
SELECT 1 IN (SELECT json_array_elements('[]')::text::int);
SELECT 1 IN (SELECT json_array_elements('[12, 10, 3]')::text::int);