首页 > 解决方案 > 如何获取 MySQL 中列所占用的字节数?

问题描述

我需要知道 MySQL 中的一列占用了多少字节。

考虑以下模式 -

+-------+---------------------+------+-----+---------+-------+
| Field | Type                | Null | Key | Default | Extra |
+-------+---------------------+------+-----+---------+-------+
| id    | bigint(20) unsigned | NO   | PRI | NULL    |       |
| data  | longblob            | YES  |     | NULL    |       |
+-------+---------------------+------+-----+---------+-------+

忽略id字段,让我们谈谈data字段。考虑这些元组 -

+-------+---------------------+
| id    | data                |
+-------+---------------------+
|   1   | {ab₹}               |
|   2   | {ab}                |
+-------+---------------------+

所以,我需要的是字节大小,而不是没有字符,比如 -

+---------------------+
| size_in_bytes       | 
+---------------------+
|                   7 |     // {->(1), a->(1), b->(1), ₹->(3), }->(1)
|                   4 |     // {->(1), a->(1), b->(1), }->(1)
+---------------------+

经过数小时的搜索,我发现很少有只导致没有字符的功能。

select OCTET_LENGTH(data) from table_name;
+--------------------+
| OCTET_LENGTH(data) |
+--------------------+
|                  5 |
|                  4 |
+--------------------+

SELECT LENGTH(data) from table_name;
+--------------+
| LENGTH(data) |
+--------------+
|            5 |
|            4 |
+--------------+

SELECT char_length(data) from table_name;
+-------------------+
| char_length(data) |
+-------------------+
|                 5 |
|                 4 |
+-------------------+

类似问题->如何获取 mysql 表中列的大小,但没有一个答案以字节为单位。

如何获取 MySQL 数据库表的大小?这是桌子的大小。

MySQL 版本 -> 8.0

在此处输入图像描述

标签: mysqlsqlmysql-8.0

解决方案


计数位

select BIT_LENGTH (N'{ab₹}')/8;

返回 7.0000

db<>小提琴


推荐阅读