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)
Advertisement
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP