SQL如何计算字符串的长度:LENGTH与CHAR_LENGTH用法

张开发
2026/4/10 22:44:38 15 分钟阅读

分享文章

SQL如何计算字符串的长度:LENGTH与CHAR_LENGTH用法
LENGTH()返回字节数CHAR_LENGTH()返回字符数中文、emoji等在UTF8mb4下占多字节但只算1字符如你好的LENGTH()为6、CHAR_LENGTH()为2。MySQL里LENGTH()和CHAR_LENGTH()到底算什么LENGTH()返回字节数CHAR_LENGTH()返回字符数——这是最根本的区别。中文、emoji、带重音的字母在UTF8mb4下占多个字节但都只算1个字符。比如字符串 你好 在UTF8mb4编码下LENGTH()返回6每个汉字3字节CHAR_LENGTH()返回2。用LENGTH()判断存储是否超长可能误判字段定义为VARCHAR(10)存入???3个emoji时CHAR_LENGTH()3但LENGTH()12实际插入会失败做截断处理时用错函数用SUBSTRING(str, 1, LENGTH(str)-1)删最后一个字节可能切掉半个汉字变成乱码统计用户昵称“长度”人眼感知的字数必须用CHAR_LENGTH()不是LENGTH()PostgreSQL和SQL Server怎么处理字符串长度PostgreSQL只有LENGTH()但它默认按字符计算类似MySQL的CHAR_LENGTH不提供字节版函数SQL Server的LEN()也按字符计但会自动忽略末尾空格而DATALENGTH()才返回字节数含空格。迁移MySQL代码到PostgreSQL时把CHAR_LENGTH(col)直接换成LENGTH(col)即可但LENGTH(col)不能照搬——它在MySQL里是字节在PG里是字符SQL Server中LEN(abc )返回3DATALENGTH(abc )返回4含1个空格字节注意业务逻辑是否依赖末尾空格跨数据库写通用SQL别硬套函数名优先在应用层统一用CHAR_LENGTH语义或明确注释编码假设为什么WHERE条件里用LENGTH()容易出错因为LENGTH()对NULL返回NULL不是0而空字符串的LENGTH()是0——这两者在WHERE中行为完全不同容易漏数据或误过滤。 Felvin AI无代码市场只需一个提示快速构建应用程序

更多文章