📜  jsonb -> ->> (1)

📅  最后修改于: 2023-12-03 15:32:25.475000             🧑  作者: Mango

JSONB -> ->> : PostgreSQL中的JSONB操作符介绍

JSONB是PostgreSQL中的一种数据类型,它可以存储任意的JSON对象以及数组。JSONB类型的数据可以进行高效的索引和查询,使得它成为了处理JSON数据的一种理想方式。而JSONB中使用的操作符' -> '和' ->> '则提供了对JSONB类型的数据的快速、灵活、方便的操作方法。

操作符的使用

' -> '操作符用于从JSONB对象中提取一个属性的值,例如:

SELECT '{"a":1, "b":"two"}'::jsonb -> 'a'; => 1

' ->> '操作符用于从JSONB对象中提取一个属性的文本值,例如:

SELECT '{"a":1, "b":"two"}'::jsonb ->> 'b'; => 'two'
操作符的功能
  • ' -> '操作符

    ' -> '操作符返回一个JSONB对象中指定属性键的值,可以是一个简单值(数字、字符串、布尔值、null),也可以是一个内嵌的JSONB对象或数组。

    SELECT '{"a":1, "b":{"c":3}}'::jsonb -> 'b'; => {"c":3}
    

    如果指定的属性键不存在,则返回null。

    SELECT '{"a":1}'::jsonb -> 'b'; => null
    
  • ' ->> '操作符

    ' ->> '操作符返回一个JSONB对象中指定属性键的文本值,如果属性键指定的值不是一个文本,则将其转换为文本。如果指定的属性键不存在,则返回null。

    SELECT '{"a":1, "b":"two"}'::jsonb ->> 'b'; => 'two'
    
操作符的扩展
  • ' ->> '操作符

    ' ->> '操作符与'->>'操作符的作用类似,但是它返回的不是一个标量文本值,而是一个文本值数组(JSONB的'->>'操作符是PostgreSQL专有的扩展操作符,不是标准SQL的一部分)。

    SELECT '{"a":1, "b":"two"}'::jsonb ->> '{a,b}'::text[]; => ['1','two']
    
  • ' ->>> '操作符

    ' ->>> '操作符是' ->> '操作符的替代版本,它不会将属性键转换为文本。如果属性键不是一个文本键值,则抛出一个错误。

    SELECT '{"a":1, "b":"two"}'::jsonb ->>> b; => 'two'
    SELECT '{"a":1, "b":{"c":3}}'::jsonb ->>> b; => ERROR:  key "b" not found in JSON document
    
总结

通过' -> '和' ->> '操作符的组合使用,可以轻松地提取JSONB对象中的任何属性值和文本。而且,' ->> '和' ->>> '操作符的存在扩展了操作符的功能,更加灵活地适应了不同的JSONB对象操作需求。