select JSONExtractInt(...,'b') = 0;
в данном виде никак, вам проще отдельные колонки c nullable()
select * from test where JSON_VALUE(data, '$.b') = 0;
там data это не строка, а object(json)
И что это меняет?
То, что не работает JSON_VALUE
вам нужно, чтобы отсутствующие поля в json сохранялись как null, а не дефолтное значение
Интуитивно понимаю, что это логично. А как это сделать для типа данных JSON? В доке не написано.
То что даже если оно из Object сделает строку, то там будут заполнены все поля, что не консистентно с входящим жсоном
текущий тип JSON так не умеет. не смотря на то что JSON ещё экспериментальная фича вряд ли кто-то поменяет его поведение, потому что NULL дорого обходится и не рекомендуется. максимум на что вам можно рассчитывать, это просить чтобы добавили NullableJSON. ну или можно проверить и разрабы уже закостылили такое поведение для Nullable(JSON).
проверьте Nullable(JSON), может прокатит
Nested type Object('json') cannot be inside Nullable type
какая жалость....
Чтобы дефолтом в Object был null, тип должен быть Object(Nullable('JSON'))
Великая и могучая группа в тг как всегда всё разрулила.
Спасибо большое!
Обсуждают сегодня