MySQL LENGTH()函数如何测量字符串长度
MySQL LENGTH()函数以“字节”为单位测量字符串长度,这意味着它不支持多字节安全。对于多字节安全函数,如CHAR_LENGTH()或CHARACTER_LENGTH(),与LENGTH()函数之间的结果差异尤其相关,特别是对于Unicode,在其中大多数字符编码为2个字节或对于UTF-8,其中字节数量不同。例如,如果一个字符串包含四个2字节字符,则LENGTH()函数将返回8,而CHAR_LENGTH()或CHARACTER_LENGTH()函数将返回4。下面是一个示例 −
阅读更多:MySQL 教程
示例
mysql> Select LENGTH('tutorialspoint');
+--------------------------+
| LENGTH('tutorialspoint') |
+--------------------------+
| 14 |
+--------------------------+
1 行记录(0.00秒)
上面的结果集显示字符串“tutorialspoint”的长度为14,因为它尚未转换为Unicode字符。以下查询将其转换为Unicode字符 −
mysql> SET @A = CONVERT('tutorialspoint' USING ucs2);
查询成功,0行记录受影响(0.02秒)
将字符串转换为Unicode后,结果为28,而不是14,因为在Unicode中,单个字符占用2个字节,如下所示 −
mysql> Select LENGTH(@A);
+------------+
| LENGTH(@A) |
+------------+
| 28 |
+------------+
1 行记录(0.00秒)
但CHAR_LENGTH()的结果为14,因为它是多字节安全函数,如下所示 −
mysql> Select CHAR_LENGTH(@A);
+-----------------+
| CHAR_LENGTH(@A) |
+-----------------+
| 14 |
+-----------------+
1 行记录(0.00秒)