首页 > 解决方案 > MySQL 5.7 中 JSON 列的最大大小

问题描述

鉴于 MySQL 5.7 数据库中的此表mydb


CREATE TABLE `foo` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `stuff` json DEFAULT NULL,
  PRIMARY KEY (`id`)
)

如何获得stuff列中数据的最大大小?不是最大可能大小,而是表中所有行的最大当前大小。我试过SELECT max(JSON_STORAGE_SIZE(stuff)) from foo了,但我得到了错误ERROR 1305 (42000): FUNCTION mydb.json_storage_size does not exist

标签: mysql

解决方案


您可以通过将其作为字符串查询来获得近似长度:

SELECT MAX(LENGTH(stuff)) FROM foo

这可能不匹配JSON_STORAGE_SIZE()

JSON_STORAGE_SIZE()功能是在 MySQL 5.7.22 中添加的。如果您有旧版本,则除非升级,否则无法使用该功能。

您看到的错误表明 MySQL 不知道它是一个内置函数,因此它正在尝试执行它,就好像您已经使用该名称创建了一个存储函数一样。


推荐阅读