How to cast json array to text array?

前端 未结 5 1154
隐瞒了意图╮
隐瞒了意图╮ 2020-12-20 20:28

This workaround not works

CREATE FUNCTION json_array_castext(json) RETURNS text[] AS $f$
  SELECT array_agg(x::text) FROM json_array_elements($1) t(x);
$f$ L         


        
5条回答
  •  攒了一身酷
    2020-12-20 20:56

    CREATE or replace FUNCTION json_to_array(json) RETURNS text[] AS $f$
      SELECT coalesce(array_agg(x), 
        CASE WHEN $1 is null THEN null ELSE ARRAY[]::text[] END)
      FROM json_array_elements_text($1) t(x);
    $f$ LANGUAGE sql IMMUTABLE;
    

    Test cases:

    • select json_to_array('["abc"]') => one element array
    • select json_to_array('[]') => an empty array
    • select json_to_array(null) => null

提交回复
热议问题