Допустим, у меня есть поля столбцов JSON, например, так:Проверьте тип значения значения JSON в Postgres
{phone: 5555555555, address: "55 awesome street", hair_color: "green"}
То, что я хотел бы сделать, это обновление записи, где ключ JSON телефон присутствует, и результатом является номер типа, который является строкой.
Что у меня есть:
SELECT *
FROM parent_object
WHERE (fields->'phone') IS NOT NULL;
К сожалению, это все еще возвращает значения, где это phone:null
. Я предполагаю, что JSON null
не эквивалентен SQL NULL
.
Как я 1) Как я исключаю JSON аннулирует AND (fields->'phone') <> null
производит
LINE 4: ...phone') IS NOT NULL AND (fields->'phone') <> 'null';
HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts.
2) Проверьте тип значения в этом ключе, этот псевдокод (type_of (fields->'phone') == Integer)
, но в рабочем PGSQL.
3) Изменить это, чтобы обновить столбец
UPDATE parent_object
SET fields.phone = to_char(fields.phone)
WHERE query defined above
Try 'НЕ NULL' вместо' NULL' –
<>, который фиксирует первый из моих проблем. Спасибо. Я переписал вопрос, чтобы не путать людей. Любые мысли о двух других? –
Почему вы пытаетесь преобразовать телефон в целое? Значение 5555555555, например, ** не ** целое, поскольку оно превышает предел (2^31) -1. –