为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:
【 TiDB 使用环境】
【概述】 场景 + 问题概述
场景:JSON_EXTRACT() 函数使用问题
【应用框架及开发适配业务逻辑】
【背景】 做过哪些操作
- 表
CREATE TABLE `test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`ext` varchar(16000) DEFAULT '{}',
PRIMARY KEY (`id`) /*T![clustered_index] CLUSTERED */
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin AUTO_INCREMENT=60002;
INSERT INTO `test` (id, `ext`) VALUES (1, '{"opt":null}');
SELECT JSON_EXTRACT(`ext`,'$.opt') IS NULL FROM test;
【现象】 业务和数据库现象
- 结果
mysql> SELECT * FROM test;
+----+--------------+
| id | ext |
+----+--------------+
| 1 | {"opt":null} |
+----+--------------+
1 row in set (0.06 sec)
mysql> SELECT JSON_EXTRACT(`ext`,'$.opt') IS NULL FROM test;
+-------------------------------------+
| JSON_EXTRACT(`ext`,'$.opt') IS NULL |
+-------------------------------------+
| 0 |
+-------------------------------------+
1 row in set (0.06 sec)
【问题】 当前遇到的问题
opt字段的value明明为空,为什么判断IS NULL会为0,不应该为1吗?
【业务影响】
功能无法实现
【TiDB 版本】
5.1.0
【附件】 相关日志及监控(https://metricstool.pingcap.com/)
若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出的打印结果,请务必全选并复制粘贴上传。