jsonb_typeof()
是一个系统函数,返回顶级 jsonb
值的类型,类型以文本字符串形式表示。
jsonb_typeof()
在 PostgreSQL 9.4 中添加。
用法
json_typeof (jsonb
) →text
将返回以下值之一:
object
array
string
number
boolean
null
请注意,这些值,尤其是在 null
的情况下,并非与相应的 SQL 数据类型直接等效。
更改历史记录
- PostgreSQL 9.4
- 添加(提交 d9134d0a)
示例
使用 jsonb_typeof()
确定各种 jsonb
值的类型
postgres=# SELECT jsonb_typeof('{"foo":[]}'::jsonb); jsonb_typeof -------------- object (1 row) postgres=# SELECT jsonb_typeof('[]'::jsonb); jsonb_typeof -------------- array (1 row) postgres=# SELECT jsonb_typeof('"foo"'::jsonb); jsonb_typeof -------------- string (1 row) postgres=# SELECT jsonb_typeof('123'::jsonb); jsonb_typeof -------------- number (1 row) postgres=# SELECT jsonb_typeof('false'::jsonb); jsonb_typeof -------------- boolean (1 row) postgres=# SELECT jsonb_typeof('null'::jsonb); jsonb_typeof -------------- null (1 row)
请注意,任何数值都映射到 number
类型
postgres=# SELECT jsonb_typeof(123::int::text::jsonb); jsonb_typeof -------------- number (1 row) postgres=# SELECT jsonb_typeof(1.23::numeric::text::jsonb); jsonb_typeof ------------- number (1 row)
jsonb
null
不等效于 SQL NULL
postgres=# SELECT jsonb_typeof('null'::jsonb), jsonb_typeof(NULL::jsonb) IS NULL; jsonb_typeof | ?column? --------------+---------- null | t (1 row)
参考文献
- PostgreSQL 文档: JSON 处理函数