Existe uma maneira de construir um jsonb com apenas um valor numérico?
Por exemplo,
SELECT pg_typeof(('{"a":1}'::jsonb) -> 'a');
indica que ('{"a":1}'::jsonb) -> 'a'
possui o tipo jsonb e contém apenas um valor numérico 1
.
Mas como crio um jsonb diretamente1
nele sem construir e destruir um objeto?
A conversão direta de tipo não parece funcionar:
# SELECT 1::jsonb;
ERROR: cannot cast type integer to jsonb
LINE 1: SELECT 1::jsonb;
Você precisa converter de uma string, não de um número:
'1'::jsonb
. Isso ocorre porque using'1'
significa que o resultado é realmente uma constante, enquanto1
é uma conversão em tempo de execução.to_jsonb(1)
também funciona, mas acho que isso usa uma conversão em tempo de execução.db<>violino