【发布时间】:2020-11-09 08:18:37
【问题描述】:
使用 JSON_EXTRACT 时识别空值的正确方法是什么,
我想使用 case 语句来识别 json 字段中的空值,如果该值为空,则在这种情况下将其替换为另一个值 1。
CREATE TABLE `Log` (
`change` json DEFAULT NULL
) ENGINE=InnoDB AUTO_INCREMENT=345 DEFAULT CHARSET=utf32 COLLATE=utf32_unicode_ci;
insert into `Log` (`change`) values (JSON_OBJECT('documentNumber', 2));
insert into `Log` (`change`) values (JSON_OBJECT('documentNumber', null));
select case
when isnull(JSON_EXTRACT(`change`, '$.documentNumber')) = 1 then '1'
else JSON_EXTRACT(`change`, '$.documentNumber')
end as 'result'
from `Log`;
对于这个查询,我得到了结果,
result
2
null
但我期待,
result
2
1
【问题讨论】:
-
这能回答你的问题吗? Can't detect null value from JSON_EXTRACT