检查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

原文由 AbuMariam 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.3k
2 个回答

这将检查secondary_pitch在哪里(null)或”(空字符串)

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

你也可以这样使用。

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

原文由 Ismail Altunören 发布,翻译遵循 CC BY-SA 4.0 许可协议

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

我使用 了 JSON_OBJECT 函数,但 JSON_ARRAY 很可能也会以类似的方式工作,在不带参数调用时创建“空”对象。

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

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

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

 SELECT vmkeys FROM `labinstances` WHERE vmkeys is NULL

希望这可以帮助…

原文由 R. Simac 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏