【发布时间】:2018-11-14 09:06:16
【问题描述】:
我有以下 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。
【问题讨论】:
-
使用原生整数数组而不是 JSON 会容易得多:
1 = any(array[1,2,3]) -
是的,毫无疑问。但这是更大查询的一部分,因此为简洁起见,我在此处进行了简化。
标签: sql arrays json postgresql