如何将 jsonb 数字数组映射到 jsonb 字符串数组?

How to map a jsonb array of numbers to a jsonb array of strings?

我有一个数字或字符串的 jsonb 数组,例如'[1, "2", 3]'::jsonb

我想将所有值映射到字符串,这样我就可以得到 '["1", "2", "3"]'::jsonb

我试过这个:

select jsonb_agg(jsonb_array_elements_text('[1, 2, 3]'::jsonb))

但是它在抱怨

LINE 1: select jsonb_agg(jsonb_array_elements_text('[1, 2, 3]'::json...
                         ^
HINT:  You might be able to move the set-returning function into a LATERAL FROM item.

按照错误消息的建议进行操作:使用设置返回函数 jsonb_array_elements_text() 就像 table:

select jsonb_agg(element)
from jsonb_array_elements_text('[1, 2, 3]'::jsonb) as x(element);