jsonb_each 函数 Returns 空值不可转换为 null::INT

jsonb_each function Returns null values Not Castable To null::INT

让我解释一下:

[1][没有错误]

SELECT (('{"a": null}'::JSONB)->>'a')::INT;

[2] [此处错误]

SELECT (t.value::TEXT)::INT FROM jsonb_each(('{"a": null}'::JSONB)) AS t

您可以这样做,例如:

SELECT nullif(t.value::text,'null')::int
FROM jsonb_each(('{"a": null}'::JSONB)) AS t

此致,
比亚尼

在您的第一个示例中,您使用 ->>,其中 returns 值作为 text 数据类型。等效的 "for each" 函数是 jsonb_each_text(),它也 returns 的值是 textjsonb_each returns 每个值作为 JSONB 值

SELECT t.value::INT 
FROM jsonb_each_text(('{"a": null}'::JSONB)) AS t