Comprehensive Guide to MySQL String Length Functions: CHAR_LENGTH vs LENGTH

Nov 21, 2025 · Programming · 13 views · 7.8

Keywords: MySQL | string_length | CHAR_LENGTH | LENGTH | multi-byte_character_sets

Abstract: This technical paper provides an in-depth analysis of MySQL's core string length calculation functions CHAR_LENGTH() and LENGTH(), exploring their fundamental differences in character counting versus byte counting through practical code examples, with special focus on multi-byte character set scenarios and complete query sorting implementation guidelines.

Fundamentals of String Length Calculation in MySQL

In database query operations, filtering and sorting data by string length is a common requirement. MySQL provides specialized string length calculation functions to meet this need, with CHAR_LENGTH() and LENGTH() being the two core functions.

Detailed Explanation of CHAR_LENGTH Function

The CHAR_LENGTH() function returns the number of characters in a string, which represents the most intuitive approach to string length calculation. This function counts all characters in the string, regardless of how many bytes each character occupies in storage.

Basic syntax example:

SELECT CHAR_LENGTH('MySQL') AS char_len;

The above query will return result 5, since the string 'MySQL' contains 5 characters.

Working Principle of LENGTH Function

The LENGTH() function returns the number of bytes occupied by the string, which is closely related to character encoding. In single-byte character sets (such as latin1), the results of CHAR_LENGTH() and LENGTH() are typically identical, but in multi-byte character sets (such as UTF-8), they produce significant differences.

Byte length calculation example:

SELECT LENGTH('MySQL') AS byte_len;

Under UTF-8 encoding, this query also returns 5, since each English character occupies 1 byte.

Comparative Analysis in Multi-byte Character Sets

When processing strings containing multi-byte characters such as Chinese or Japanese, the differences between the two functions become particularly evident. Taking the Chinese characters '海豚' as an example:

SET @dolphin = '海豚';
SELECT 
    LENGTH(@dolphin) AS byte_length,
    CHAR_LENGTH(@dolphin) AS char_length;

The execution results will show:

Practical Application Scenarios

Choosing the correct length function is crucial in data querying and sorting scenarios. Below is a complete example of sorting by string length:

-- Create test table and data
CREATE TABLE user_comments (
    id INT PRIMARY KEY AUTO_INCREMENT,
    username VARCHAR(50),
    comment_text VARCHAR(255)
);

INSERT INTO user_comments (username, comment_text) VALUES
('user1', 'Hello'),
('user2', '你好世界'),
('user3', 'This is a longer comment'),
('user4', '短文本');

-- Query sorted by character length
SELECT username, comment_text, CHAR_LENGTH(comment_text) AS char_len
FROM user_comments 
ORDER BY CHAR_LENGTH(comment_text) DESC;

The above query will sort the comments in descending order based on character count, ensuring the sorting results align with user expectations.

Function Selection Strategy

In practical development, appropriate function selection should be based on specific requirements:

Performance Considerations and Best Practices

When using string length functions on large datasets, the following performance optimization strategies should be considered:

  1. Create functional indexes for string columns frequently used in sorting or filtering
  2. Avoid direct use of length functions on long text columns in WHERE clauses
  3. Consider caching calculation results in additional columns to reduce real-time computation overhead

Functional index creation example:

CREATE INDEX idx_comment_length ON user_comments (CHAR_LENGTH(comment_text));

Extended String Function Family

Beyond the core length calculation functions, MySQL provides other related string processing functions:

These functions can provide more precise length calculation capabilities in specific scenarios.

Conclusion

CHAR_LENGTH() and LENGTH() are the two core functions for handling string length in MySQL. Understanding their differences is essential for writing correct database queries. In multi-language, multi-character-set application environments, proper selection of length calculation functions ensures accuracy and consistency in data processing results. Through the detailed analysis and code examples provided in this paper, developers can better master the usage techniques of these functions, thereby improving the efficiency and accuracy of database operations.

Copyright Notice: All rights in this article are reserved by the operators of DevGex. Reasonable sharing and citation are welcome; any reproduction, excerpting, or re-publication without prior permission is prohibited.