跳到主要内容

LENGTH

描述

LENGTH 函数返回字符串的字节长度(以字节为单位)。该函数计算的是字符串在 UTF-8 编码下占用的字节数,而不是字符数。

注意与 CHAR_LENGTH 的区别:

  • LENGTH() 返回字节数
  • CHAR_LENGTH()CHARACTER_LENGTH() 返回字符数
  • 对于 ASCII 字符,字节数和字符数相同
  • 对于多字节字符(如中文、emoji),字节数通常大于字符数

别名

  • OCTET_LENGTH()

语法

LENGTH(<str>)

参数

参数说明
<str>需要计算字节长度的字符串。类型:VARCHAR

返回值

返回 INT 类型,表示字符串的字节长度。

特殊情况:

  • 如果参数为 NULL,返回 NULL
  • 空字符串返回 0
  • 计算结果是 UTF-8 编码的字节数

示例

  1. ASCII 字符(字节数=字符数)
SELECT LENGTH('abc'), CHAR_LENGTH('abc');
+---------------+--------------------+
| LENGTH('abc') | CHAR_LENGTH('abc') |
+---------------+--------------------+
| 3 | 3 |
+---------------+--------------------+
  1. 中文字符(字节数>字符数)
SELECT LENGTH('中国'), CHAR_LENGTH('中国');
+------------------+---------------------+
| LENGTH('中国') | CHAR_LENGTH('中国') |
+------------------+---------------------+
| 6 | 2 |
+------------------+---------------------+
  1. NULL 值处理
SELECT LENGTH(NULL);
+--------------+
| LENGTH(NULL) |
+--------------+
| NULL |
+--------------+
  1. 空字符串
SELECT LENGTH('');
+------------+
| LENGTH('') |
+------------+
| 0 |
+------------+
  1. 混合字符类型
SELECT LENGTH('Hello世界'), CHAR_LENGTH('Hello世界');
+---------------------+--------------------------+
| LENGTH('Hello世界') | CHAR_LENGTH('Hello世界') |
+---------------------+--------------------------+
| 11 | 7 |
+---------------------+--------------------------+
  1. 特殊字符
SELECT LENGTH('\t\n\r'), LENGTH('  ');
+------------------+-------------+
| LENGTH('\t\n\r') | LENGTH(' ') |
+------------------+-------------+
| 3 | 2 |
+------------------+-------------+
  1. UTF-8 多字节字符对比
SELECT LENGTH('ṭṛì'), CHAR_LENGTH('ṭṛì');
+----------------+---------------------+
| LENGTH('ṭṛì') | CHAR_LENGTH('ṭṛì') |
+----------------+---------------------+
| 9 | 3 |
+----------------+---------------------+
  1. Emoji 字符(每个emoji通常占4字节)
SELECT LENGTH('😀😁'), CHAR_LENGTH('😀😁');
+-------------------+------------------------+
| LENGTH('😀😁') | CHAR_LENGTH('😀😁') |
+-------------------+------------------------+
| 8 | 2 |
+-------------------+------------------------+
  1. 数字字符串
SELECT LENGTH('12345'), CHAR_LENGTH('12345');
+-----------------+----------------------+
| LENGTH('12345') | CHAR_LENGTH('12345') |
+-----------------+----------------------+
| 5 | 5 |
+-----------------+----------------------+