在 MySQL 中查询(限制)字符串长度使用 lengthchar_length 关键字,两者的区别是 LENGTH() 以字节计算而 CHAR_LENGTH() 以字符计算。这意味着,对于一个包含 5 个 2 字节字符的字符串,LENGTH() 返回 10,而 CHAR_LENGTH() 返回 5。如果 str 是 NULL ,则返回NULL。

比如中文在 MYSQL UTF-8 编码下,一个字符占3个字节。因此如果查询中文字符串长度应该用 CHAR_LENGTH()

具体用法如下:

查询 nickname 字段长度大于10的记录:

select * from tablename where length(nickname)>10
select * from tablename where char_length(nickname)>10

查询 nickname 字段长度小于或等于5的记录:

select * from tablename where length(nickname) <= 5
select * from tablename where char_length(nickname) <= 5

查询指定字符串长度:

mysql> SELECT CHAR_LENGTH('你好,www.codesou.cn');//16,以字符为单位,总计16个字符
mysql> SELECT LENGTH('你好,www.codesou.cn');//22,以字节为单位,UTF-8编码下"你好,"每个字符占3个字节,共9+13=22个字节