В чем разница между `- >>` и `->` в Postgres SQL?
В чем разница между ->>
и ->
в SQL?
В этом потоке (Проверить, существует ли поле в столбце json type postgresql), ответчик в основном рекомендует использовать
json->'attribute' is not null
вместо <
json->>'attribute' is not null
Зачем использовать одну стрелку вместо двойной стрелки? В моем ограниченном опыте оба делают то же самое.
Ответы
Ответ 1
->
возвращает json(b)
и ->>
возвращает text
:
with t (jo, ja) as (values
('{"a":"b"}'::jsonb,('[1,2]')::jsonb)
)
select
pg_typeof(jo -> 'a'), pg_typeof(jo ->> 'a'),
pg_typeof(ja -> 1), pg_typeof(ja ->> 1)
from t
;
pg_typeof | pg_typeof | pg_typeof | pg_typeof
-----------+-----------+-----------+-----------
jsonb | text | jsonb | text
Ответ 2
PostgreSQL предоставляет два собственных оператора ->
и ->>
, которые помогут вам запрашивать данные JSON.
Оператор ->
возвращает поле объекта JSON как JSON.
Оператор ->>
возвращает поле объекта JSON в виде текста.
В следующем запросе используется оператор ->
для получения всех клиентов в виде JSON:
![введите описание изображения здесь]()
В следующем запросе используется оператор ->>
, чтобы получить всех клиентов в виде текста:
![введите описание изображения здесь]()
Вы можете увидеть более подробную информацию по ссылке ниже
http://www.postgresqltutorial.com/postgresql-json/