我有以下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。
答案 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);