检查mysql中的json值是否为空?

velaa5lx  于 2021-06-20  发布在  Mysql
关注(0)|答案(5)|浏览(655)

想象一下一张table,上面有棒球投手的踪迹,就像这样。。。

+------------+--------------------+-------+
     | 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    |    [] |
     +------------+--------------------+-------+

注意,第二列有一个json值。因此,如果一个pitcher,比如chapman,没有第二音高,它将不会返回null,而是返回一个空的json字符串('[])。
那我怎么计算没有第二投球的投手的数量呢?
我不能。。。

select count(*) from pitchers where secondary_pitch is null
kuarbcqp

kuarbcqp1#

我看到这并没有回答与空数组匹配的原始问题( [] )但这对我来说是有效的,与空字典相匹配( {} ),在mysql 5.7.20-0ubuntu0.16.04.1 - (Ubuntu) .
我使用了json_object函数,但json_数组也很可能以类似的方式工作,在没有参数的情况下调用时创建“空”对象。
如果我想匹配json列 vmkeys 的价值 {} (空字典),我使用以下查询:

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

与…抗衡 vmkeys 值为null时,我使用以下方法:

SELECT vmkeys FROM `labinstances` WHERE vmkeys is NULL

希望这有帮助。。。

aurhwmvo

aurhwmvo2#

这将检查辅助音调是(null)还是“”(空字符串)

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

你也可以这样用。

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

kmpatx3s3#

您可以使用以下功能

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

u7up0aaq4#

我想你可以用 json_length() :

where json_length(secondary_pitch) = 0
rsl1atfo

rsl1atfo5#

你可以用 JSON_EXTRACT 从列中获取第一个值并检查是否不为null

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

演示

相关问题