Eu tenho alguns dados em um jsonb col que preciso limpar e inserir em outra coluna de matriz de texto.
O que eu tenho:
[
{
"v": "birthday"
},
{
"v": "reference"
}
]
O que eu quero (_texto):
{birthday, reference}
Minha consulta:
select array[col -> 0 ->> 'v', col-> 1 ->> 'v'] from src
dá o resultado esperado como acima.
No entanto, quando o valor é nulo, quero que o valor não seja inserido, ou seja, nenhum valor NULL nem vazio:
[
{
"v": "birthday"
}
]
deve resultar em
{birthday}
e não
{birthday, [NULL]} -- NULL value
{birthday,} -- Empty string with coalesce
Como você insere condicionalmente um elemento em uma matriz ao criar uma, com base no valor do elemento?
array_remove() parece responder ao meu caso de uso (removendo em uma segunda etapa os valores nulos):