Postgresql-14

如何構造一個包含數字的jsonb?

  • May 15, 2022

有沒有辦法構造一個只有一個數值的jsonb?

例如,

SELECT pg_typeof(('{"a":1}'::jsonb) -> 'a');

表示('{"a":1}'::jsonb) -> 'a'jsonb 類型,並且只包含一個數值1

但是如何在不構造和破壞對象的情況下直接創建一個1jsonb呢*?*

直接類型轉換似乎不起作用:

# SELECT 1::jsonb;
ERROR:  cannot cast type integer to jsonb
LINE 1: SELECT 1::jsonb;

您需要從字元串而不是數字進行轉換:'1'::jsonb。這是因為 using'1'意味著結果實際上是一個常量,而是1執行時轉換。

to_jsonb(1)也可以,但我認為這使用了執行時轉換。

SELECT pg_typeof('1'::jsonb), jsonb_typeof('1'::jsonb);

db<>小提琴

引用自:https://dba.stackexchange.com/questions/312132