MySQLLENGTH ()函数以“字节”为单位测量字符串的长度。 这意味着多字节不安全。 CHAR_LENGTH (或CHARACTER_LENGTH ) )等多字节安全函数与LENGTH ) )特别是与Unicode相关的函数之间的结果差异。 大多数字符编码为双字节或与UTF-8相关。 其中,字节数不同。 例如,如果字符串包含四个双字节字符,则LENGTH (函数返回8,CHAR_LENGTH )或CHARACTER_LENGTH )函数返回4。 以下示例进行了演示—
示例mysqlselectlength('nhooo );
--------------------
|Length(nhooo ) |
--------------------
|14|
--------------------
1原始插入(0.00 sec ) )。
根据上面的结果集,字符串' nhooo '还没有转换为Unicode字符,因此长度为14。 以下查询将其转换为Unicode字符- MySQL set @ a=convert (' n hooo ' using UCS2)。
将字符串转换为Unicode后,结果将是28而不是14。 在Unicode中,将-mysqlSelectLENGTH(@A;
----------------
|length(@a ) |
----------------
|28|
----------------
1原始插入(0.00 sec ) )。
但是,由于CHAR_LENGTH ()是多字节安全函数,因此可以得到以下14个结果。 -mysqlselectchar_length ) @a );
-----------------
|char_length(@a ) |
-----------------
|14|
-----------------
1原始插入(0.00 sec ) )。