检查 MySQL 中的 JSON 值是否为空?



想象一下一张跟踪棒球投手的桌子,就像这样......

+------------+--------------------+-------+
| 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 值。因此,如果像查普曼这样的投手没有辅助投球,它不会返回 null,而是返回一个空的 JSON 字符串 ('[]'(。

那么我怎样才能计算出没有二次投球的投手数量呢?

我做不到...

select count(*) from pitchers where secondary_pitch is null

我认为你可以只使用json_length()

where json_length(secondary_pitch) = 0

您可以使用JSON_EXTRACT从列中获取第一个值并检查是否为空

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

演示

我看到这不是回答与空数组([](匹配的原始问题,但这对我有用,在mysql5.7.20-0ubuntu0.16.04.1 - (Ubuntu)与空字典({}(匹配。

我使用了JSON_OBJECT函数,但JSON_ARRAY很可能也会以类似的方式工作,在没有参数的情况下调用时创建"空"对象。

如果我想与 json 列vmkeys值匹配{}(空字典(,我使用以下查询:

SELECT vmkeys FROM `labinstances` WHERE vmkeys=JSON_OBJECT() 

为了与 NULL 的vmkeys值匹配,我使用了这个:

SELECT vmkeys FROM `labinstances` WHERE vmkeys is NULL 

希望这有帮助...

这将检查secondary_pitch的位置(null(或''(空字符串(

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

你也可以这样使用。

SELECT count(*) from pitchers WHERE secondary_pitch LIKE '%[]%'

您可以使用以下函数

SELECT * FROM TABLE_NAME WHERE 
JSON_SEARCH(secondary_pitchers, 'all', '') 
IS NOT NULL;

相关内容

  • 没有找到相关文章

最新更新