Проверить, является ли значение JSON пустым в MySQL?

0

Представьте себе таблицу, которая отслеживает кувшины бейсбола, как...

     +------------+--------------------+-------+
     | id | name               | secondary_pitch |
     +------------+--------------------+-------+
     | 13 | Chris Sale         | ['Curveball','Slider'] |
     | 14 | Justin Verlander   | ['Fastball','Changeup'] |
     | 15 | CC Sabathia        | ['Fastball','Curveball'] |
     | 16 | Sonny Grey         |    ['Slider'] |
     | 17 | Aldoris Chapman    |    [] |
     +------------+--------------------+-------+

Обратите внимание, что столбец secondary_pitch имеет значение JSON. Поэтому, если у кувшина, такого как Chapman, нет вторичного тона, он не будет возвращать нуль, вместо этого он возвращает пустую строку JSON ('[]').

Как тогда я могу получить количество кувшинов, у которых нет вторичной подачи?

Я не могу...

  select count(*) from pitchers where secondary_pitch is null
  • 0
    Какая польза от размещения файла Json в вашей колонке? (Я бы переделал таблицу)
  • 0
    Все «типы массивов», такие как ['Curveball','Slider'] являются недопустимыми JSON, поэтому ни одна из родных JSON MySQL (например, JSON_LENGTH , JSON_SEARCH или JSON_EXTRACT видели несколько ответов вместе с ним) не будут работать ... ["Curveball","Slider"] является допустимым JSON, тогда функции JSON MySQL должны работать очень хорошо.
Теги:
null

4 ответа

1
Лучший ответ

Это проверит, где secondary_pitch (null) или '' (пустая строка)

SELECT count(*) from pitchers WHERE secondary_pitch IS NULL OR secondary_pitch = '';

вы также можете использовать это.

SELECT count(*) from pitchers WHERE secondary_pitch LIKE '%[]%'
  • 2
    пустой JSON ( [] ) элемент массива json не равен NULL или ' ' поэтому это не сработает ..
  • 0
    Таким образом, вы можете использовать это как "LIKE '% []%'"
Показать ещё 2 комментария
1

Я думаю, вы можете просто использовать json_length():

where json_length(secondary_pitch) = 0
  • 0
    Не работают данные (например, ['Curveball','Slider'] ) является недействительным JSON ..
  • 0
    @RaymondNijland Почему? Работает отлично. Список с 0 элементами имеет длину 0 в json_length
Показать ещё 1 комментарий
1

Вы можете использовать JSON_EXTRACT чтобы получить первое значение из своего столбца и проверить, не null

where JSON_EXTRACT('secondary_pitch', '$[0]') is not null

демонстрация

  • 0
    @RaymondNijland проверьте демо-ссылку, она будет работать с двойными кавычками, а не с одинарными.
  • 1
    Данные с двойными qoutes действительно являются допустимыми JSON, тогда работает функция JSON. Вы должны упомянуть в ответе, что тема запускает текущие данные JSON недействительными JSON
0

Вы можете использовать функцию ниже

SELECT * FROM TABLE_NAME WHERE 
JSON_SEARCH(secondary_pitchers, 'all', '') 
    IS NOT NULL;
  • 0
    Не работают данные (например, ['Curveball','Slider'] ) является недействительным JSON ..

Ещё вопросы

Сообщество Overcoder
Наверх
Меню