MySQL 函数 BIT_LENGTH() 是否是多字节安全的?


就像 LENGTH() 函数一样,MySQL BIT_LENGTH() 函数不是多字节安全的函数。正如我们所知,对于 Unicode 来说,多字节安全函数(例如 CHAR_LENGTH() 或 CHARACTER_LENGTH())和 BIT_LENGTH() 函数之间的结果差异特别明显,其中大多数字符使用两个字节编码或对于字节数不同的 UTF-8 来说,差异特别明显。以下示例对此进行了说明 −

示例

mysql> Select BIT_LENGTH('tutorialspoint');
+------------------------------+
| BIT_LENGTH('tutorialspoint') |
+------------------------------+
| 112                          |
+------------------------------+
1 row in set (0.00 sec)

以上结果集显示字符串“tutorialspoint”的位长为 112,因为它尚未转换为 Unicode 字符。以下查询将其转换为 Unicode 字符 −

mysql> SET @A = CONVERT('tutorialspoint' USING ucs2);
Query OK, 0 rows affected (0.02 sec)

转换字符串为 Unicode 后,它会产生 224 而不是 112 的结果,这是因为在 Unicode 中单个字符占用 2 个字节,如下所示 −

mysql> Select BIT_LENGTH(@A);
+----------------+
| BIT_LENGTH(@A) |
+----------------+
| 224            |
+----------------+
1 row in set (0.00 sec)

更新日期:22-Jun-2020

116 次浏览

开启你的 职业生涯

完成课程即可获得认证

开始
Advertisement
© . All rights reserved.