代码之家  ›  专栏  ›  技术社区  ›  Sankar

postgres从文本中提取int数组

  •  0
  • Sankar  · 技术社区  · 6 年前

    我有以下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]') );
    

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

    我用的是Postgres9.4,如果有关系的话。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Sankar    6 年前

    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);