为什么MySQL中的BIT_LENGTH(str)函数返回的汉字大小是2个字节?

问题描述 投票:0回答:1

MySQL版本:

Ver 8.0.34 for Win64 on x86_64 (MySQL Community Server - GPL)

BIT_LENGTH(str):返回字符串 str 的长度(以位为单位)。如果 str 为 NULL,则返回 NULL。

当我输入时:

select BIT_LENGTH('你好')/8;

我得到了:

+----------------------+
| BIT_LENGTH('你好')/8 |
+----------------------+
|               4.0000 |
+----------------------+

当我创建一个表并创建一个名为“Hello”的列,并插入“你好”时:

select Hello from chinese_test;
+-------+
| Hello |
+-------+
| NULL  |
| NULL  |
| NULL  |
| 你好  |
+-------+
select LENGTH(Hello) from chinese_test;
select LENGTH(Hello) from chinese_test;
+---------------+
| LENGTH(Hello) |
+---------------+
|          NULL |
|          NULL |
|          NULL |
|             6 |
+---------------+

那么,为什么我从 BIT_LENGTH 函数中得到 2 个字节。我用谷歌搜索并检查了 MySQL 参考手册(很庆幸有人会告诉我我错过了什么)。里面没有与BIT_LENGTH函数相关的内容。

我只是想知道BIT_LENGTH函数如何返回2个字节的汉字而不是3个字节或4个字节。

mysql character-encoding character
1个回答
0
投票

BIT_LENGTH
结果取决于您的连接字符集。

输出是什么:

select @@character_set_connection, BIT_LENGTH('你好')/8;

查看dbfiddle

© www.soinside.com 2019 - 2024. All rights reserved.