blob: 305b97932b758b0d05c661c0b3d16d12a7ca262b [file] [view]
---
{
"title": "LENGTH",
"language": "en",
"description": "The LENGTH function returns the byte length of a string (in bytes). This function calculates the number of bytes a string occupies in UTF-8 encoding, not the number of characters."
}
---
## Description
The LENGTH function returns the byte length of a string (in bytes). This function calculates the number of bytes a string occupies in UTF-8 encoding, not the number of characters.
**Note the difference from CHAR_LENGTH:**
- `LENGTH()` returns the number of bytes
- `CHAR_LENGTH()` and `CHARACTER_LENGTH()` return the number of characters
- For ASCII characters, byte count equals character count
- For multi-byte characters (such as Chinese, emoji), byte count is usually greater than character count
## Alias
- `OCTET_LENGTH()`
## Syntax
```sql
LENGTH(<str>)
```
## Parameters
| Parameter | Description |
|---------|---------------|
| `<str>` | The string whose byte length needs to be calculated. Type: VARCHAR |
## Return Value
Returns INT type, representing the byte length of the string.
Special cases:
- If parameter is NULL, returns NULL
- Empty string returns 0
- Result is the number of bytes in UTF-8 encoding
## Examples
1. ASCII characters (byte count = character count)
```sql
SELECT LENGTH('abc'), CHAR_LENGTH('abc');
```
```text
+---------------+--------------------+
| LENGTH('abc') | CHAR_LENGTH('abc') |
+---------------+--------------------+
| 3 | 3 |
+---------------+--------------------+
```
2. Chinese characters (byte count > character count)
```sql
SELECT LENGTH('中国'), CHAR_LENGTH('中国');
```
```text
+------------------+---------------------+
| LENGTH('中国') | CHAR_LENGTH('中国') |
+------------------+---------------------+
| 6 | 2 |
+------------------+---------------------+
```
3. NULL value handling
```sql
SELECT LENGTH(NULL);
```
```text
+--------------+
| LENGTH(NULL) |
+--------------+
| NULL |
+--------------+
```
4. Empty string
```sql
SELECT LENGTH('');
```
```text
+------------+
| LENGTH('') |
+------------+
| 0 |
+------------+
```
5. Mixed character types
```sql
SELECT LENGTH('Hello世界'), CHAR_LENGTH('Hello世界');
```
```text
+-----------------------+----------------------------+
| LENGTH('Hello世界') | CHAR_LENGTH('Hello世界') |
+-----------------------+----------------------------+
| 11 | 7 |
+-----------------------+----------------------------+
```
6. Escape characters and ASCII spaces
```sql
SELECT LENGTH('\t\n\r'), LENGTH(' ');
```
```text
+------------------+--------------+
| LENGTH('\t\n\r') | LENGTH(' ') |
+------------------+--------------+
| 3 | 2 |
+------------------+--------------+
```
7. UTF-8 multi-byte characters versus character count
```sql
SELECT LENGTH('ṭṛì'), CHAR_LENGTH('ṭṛì');
```
```text
+--------------------+-------------------------+
| LENGTH('ṭṛì') | CHAR_LENGTH('ṭṛì') |
+--------------------+-------------------------+
| 8 | 3 |
+--------------------+-------------------------+
```
8. Emoji (typically 4 bytes per glyph)
```sql
SELECT LENGTH('😀😁'), CHAR_LENGTH('😀😁');
```
```text
+--------------------+-------------------------+
| LENGTH('😀😁') | CHAR_LENGTH('😀😁') |
+--------------------+-------------------------+
| 8 | 2 |
+--------------------+-------------------------+
```
9. Numeric strings
```sql
SELECT LENGTH('12345'), CHAR_LENGTH('12345');
```
```text
+-----------------+----------------------+
| LENGTH('12345') | CHAR_LENGTH('12345') |
+-----------------+----------------------+
| 5 | 5 |
+-----------------+----------------------+
```