让我解释一下:
[1] [无错误]
SELECT (('{"a": null}'::JSONB)->>'a')::INT;
[2] [此处错误]
SELECT (t.value::TEXT)::INT FROM jsonb_each(('{"a": null}'::JSONB)) AS t
我必须使用jsonb_each函数。
如何使SQL数字2返回null?
在第一个示例中,您使用->>
,它将值作为text
数据类型返回。等效的"for each"函数是jsonb_each_text()
,它也将值返回为text
。jsonb_each
将每个值作为JSONB值返回
SELECT t.value::INT
FROM jsonb_each_text(('{"a": null}'::JSONB)) AS t
您可以这样做,例如:
SELECT nullif(t.value::text,'null')::int
FROM jsonb_each(('{"a": null}'::JSONB)) AS t
问候,
Bjarni