length计算字符串长度在mysql中如何操作

LENGTH()函数返回字符串的字节长度,如SELECT LENGTH('hello')返回5,SELECT LENGTH('你好')在utf8mb4下返回6;CHAR_LENGTH()返回字符数,如CHAR_LENGTH('你好')返回2;常用于验证字段长度,如限制用户名不超过20字符:SELECT * FROM users WHERE CHAR_LENGTH(username)

在 MySQL 中,可以使用 LENGTH() 函数来计算字符串的字节长度。

LENGTH() 函数说明

LENGTH(str) 返回字符串 str 的字节长度,不是字符数。对于单字节编码(如 latin1),一个字符占一个字节;但在 UTF-8 编码中,中文或特殊字符通常占多个字节。

例如:

SELECT LENGTH('hello'); -- 返回 5

SELECT LENGTH('你好'); -- 在 utf8mb4 下返回 6(每个汉字占3字节)

CHAR_LENGTH() 与 LENGTH() 的区别

如果关心的是字符个数而非字节长度,应使用 CHAR_LENGTH()

  • LENGTH('你好') → 6(字节)
  • CHAR_LENGTH('你好') → 2(字符)

实际应用场景

常用于验证字段内容长度是否符合要求,比如限制用户名不超过20个字符:

SELECT * FROM users WHERE CHAR_LENGTH(username)

或检查某字段存储的文本是否为空或仅有空格:

SELECT * FROM messages WHERE LENGTH(TRIM(content)) = 0;

基本上就这些,根据字符集和需求选择 LENGTH 或 CHAR_LENGTH 更合适。