Mysql计算字段长度函数之CHAR_LENGTH函数
CHAR_LENGTH函数用于返回字符串的长度,长度单位为字符
不管汉字,数字或是字母都算是一个字符,包括中英文标点符号,空格也算是一个字符
语法结构
CHAR_LENGTH(str)
str:计算长度的字符串
示例
-- 4
SELECT CHAR_LENGTH('test');
-- 12
SELECT CHAR_LENGTH('Hello World!');
-- 2
SELECT CHAR_LENGTH('小胡');
-- 3
SELECT CHAR_LENGTH('123');
-- 4
SELECT CHAR_LENGTH(',,,,');
-- 2
SELECT CHAR_LENGTH(' ');
-- 0
SELECT CHAR_LENGTH('');
-- Null
SELECT CHAR_LENGTH(NULL);
案例:对过长的昵称进行截取处理
导入数据
drop table if exists user_info;
CREATE TABLE user_info (
id int PRIMARY KEY AUTO_INCREMENT COMMENT '自增ID',
uid int UNIQUE NOT NULL COMMENT '用户ID',
`nick_name` varchar(64) COMMENT '昵称',
achievement int COMMENT '成就值',
level int COMMENT '用户等级',
job varchar(32) COMMENT '职业方向',
register_time datetime COMMENT '注册时间'
)CHARACTER SET utf8 COLLATE utf8_general_ci;
INSERT INTO user_info(uid,`nick_name`,achievement,`level`,job,register_time) VALUES
(1001, '牛客1', 19, 0, '算法', '2020-01-01 10:00:00'),
(1002, '牛客2号', 1200, 3, '算法', '2020-01-01 10:00:00'),
(1003, '牛客3号♂', 22, 0, '算法', '2020-01-01 10:00:00'),
(1004, '牛客4号', 25, 0, '算法', '2020-01-01 11:00:00'),
(1005, '牛客5678901234号', 4000, 7, '算法', '2020-01-01 10:00:00'),
(1006, '牛客67890123456789号', 25, 0, '算法', '2020-01-02 11:00:00');
user_info表(用户信息表)
uid: 用户ID nick_name: 昵称 achievement: 成就值 level: 等级 job: 职业方向
register_time: 注册时间
问题:
有的用户的昵称特别长,在一些展示场景会导致样式混乱,因此需要将特别长的昵称转换一下再输出,请输出字符数大于10的用户信息,对于字符数大于13的用户输出前10个字符然后加上三个点号: "..."
-- 解法1
SELECT uid, IF(CHAR_LENGTH(nick_name) > 13,CONCAT(LEFT(nick_name,10),'...'),nick_name)AS nick_name
FROM user_info
WHERE CHAR_LENGTH(nick_name) > 10;
-- 解法2
SELECT uid,
(CASE WHEN CHAR_LENGTH(nick_name) <= 13 THEN nick_name
ELSE CONCAT(SUBSTRING(nick_name,1,10),'...')
END)AS nick_name
FROM user_info
WHERE CHAR_LENGTH(nick_name) > 10;
结果展示:
解释: 字符数大于10的用户有1005和1006,长度分别为13、17,因此需要对1006的昵称截断输出
附:CHAR_LENGTH()和LENGTH()的区别
无论是LENGTH()还是CHAR_LENGTH()都是为了统计字符串的长度。只不过,LENGTH()是按照字节来统计的,CHAR_LENGTH()是按照字符来统计的。例如:一个包含5个字符且每个字符占两个字节(比如汉字)的字符串而言,LENGTH()返回长度10,CHAR_LENGTH()返回长度是5;如果对于单字节的字符,则两者返回结果相同。
一、char_length('string')/char_length(column_name)
1、返回值为字符串string或者对应字段长度,长度的单位为字符,一个多字节字符(例如,汉字)算作一个单字符;
2、不管汉字还是数字或者是字母都算是一个字符;
3、任何编码下,多字节字符都算是一个字符;
二、length('string')/length(column_name)
1、utf8字符集编码下,一个汉字是算三个字符,一个数字或字母算一个字符。
2、其他编码下,一个汉字算两个字符, 一个数字或字母算一个字符。
总结
到此这篇关于mysql计算字段长度函数之CHAR_LENGTH函数的文章就介绍到这了,更多相关Mysql CHAR_LENGTH函数内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341