mysql字符串函数详细汇总
本篇文章向大家介绍《mysql字符串函数详细汇总》,主要包括函数、mysql字符串,具有一定的参考价值,需要的朋友可以参考一下。
计算字符串字符数的函数
CHAR_LENGTH(str)函数计算字符串str所包含的字符个数。一个多字节字符算作一个单字符。
mysql> select char_length('date'), char_length('yunweijia'), char_length('运维家');
+---------------------+--------------------------+--------------------------+
| char_length('date') | char_length('yunweijia') | char_length('运维家') |
+---------------------+--------------------------+--------------------------+
| 4 | 9 | 3 |
+---------------------+--------------------------+--------------------------+
1 row in set (0.00 sec)
mysql>
计算字符串长度的函数
LENGTH(str)返回值为字符串的字节长度,使用utf8编码字符集时,一个汉字是三字节,一个数字或者字母算1字节;
mysql> select length('date'), length('yunweijia'), length('运维家');
+----------------+---------------------+---------------------+
| length('date') | length('yunweijia') | length('运维家') |
+----------------+---------------------+---------------------+
| 4 | 9 | 9 |
+----------------+---------------------+---------------------+
1 row in set (0.00 sec)
mysql>
合并字符串函数CONCAT(s1,s2,...)、CONCAT_WS(x,s1,s2,...)
concat(s1,s2,...)返回结果为连接参数产生的字符串,或许有一个或多个参数。
如果有一个参数为null,则返回值为null。
如果所有参数均为非二进制字符串,则结果为非二进制字符串。
如果自变量中含有任一二进制字符串,则结果为一个二进制字符串。
mysql> select concat('mysql 8.0', 'yunweijia'), concat('heihei', null, '666');
+----------------------------------+-------------------------------+
| concat('mysql 8.0', 'yunweijia') | concat('heihei', null, '666') |
+----------------------------------+-------------------------------+
| mysql 8.0yunweijia | NULL |
+----------------------------------+-------------------------------+
1 row in set (0.00 sec)
mysql>
concat_ws(x,s1,s2,...)中,x是分隔符,分隔符的位置放在要连接的两个字符串之间。分隔符可以是一个字符串,也可以是其他参数。
如果分隔符是null,则结果为null。该函数会忽略任何分隔符后面的null值。
mysql> select concat_ws('-', 'mysql', '8.0', 'ywj'), concat_ws('@', 'one', null, 'two');
+---------------------------------------+------------------------------------+
| concat_ws('-', 'mysql', '8.0', 'ywj') | concat_ws('@', 'one', null, 'two') |
+---------------------------------------+------------------------------------+
| mysql-8.0-ywj | one@two |
+---------------------------------------+------------------------------------+
1 row in set (0.00 sec)
mysql>
替换字符串的函数INSERT(s1,x,len,s2)
insert(s1,x,len,s2)返回字符串s1,其子字符串起始于x位置和被字符串s2取代的len字符。如果x超过字符串长度,则返回值为原始字符串。假如len的长度大于其他字符串的长度,则从位置x开始替换。若任何一个参数为null,则返回值为null。
mysql> select insert('yunweijia', 2, 3, 'aaaaaaaa') as coll, insert('yunweijia', -1, 3, 'bbbbbbbb') as coll2, insert('yunweijia', 2, 99, 'ccccccccc') as coll3;
+----------------+-----------+------------+
| coll | coll2 | coll3 |
+----------------+-----------+------------+
| yaaaaaaaaeijia | yunweijia | yccccccccc |
+----------------+-----------+------------+
1 row in set (0.00 sec)
mysql>
第一个函数insert('yunweijia', 2, 3, 'aaaaaaaa')将yunweijia第二个字符开始长度为3的字符串,替换成aaaaaaaa;
第二个函数insert('yunweijia', -1, 3, 'bbbbbbbb')中由于-1超出了字符串长度,直接返回了原字符串;
第三个函数insert('yunweijia', 2, 99, 'ccccccccc')中由于替换长度99,超出了字符串原本长度,所以从第二个字符开始,截取后面所有的字符,并替换为指定字符ccccccccc。
字母大小写转换函数
大写转小写
lower(str)或者lcase(str)可以将字符串str中的字母字符全部转换成小写字母。
mysql> select lower('YUNweiJIA'), lcase('YUNweiJIA');
+--------------------+--------------------+
| lower('YUNweiJIA') | lcase('YUNweiJIA') |
+--------------------+--------------------+
| yunweijia | yunweijia |
+--------------------+--------------------+
1 row in set (0.00 sec)
mysql>
小写转大写
upper(str)或者ucase(str)可以将字符串str中的字母字符全部转换成大写字母。
mysql> select upper('yunWEIjia'), ucase('yunWEIjia');
+--------------------+--------------------+
| upper('yunWEIjia') | ucase('yunWEIjia') |
+--------------------+--------------------+
| YUNWEIJIA | YUNWEIJIA |
+--------------------+--------------------+
1 row in set (0.00 sec)
mysql>
获取指定长度的字符串的函数LEFT(s,n)和RIGHT(s,n)
left(s,n)返回字符串s开始的最左边的n个字符。
mysql> select left('yunweijia', 5);
+----------------------+
| left('yunweijia', 5) |
+----------------------+
| yunwe |
+----------------------+
1 row in set (0.00 sec)
mysql>
right(s,n)返回字符串s开始的最右边的n个字符。
mysql> select right('yunweijia', 5);
+-----------------------+
| right('yunweijia', 5) |
+-----------------------+
| eijia |
+-----------------------+
1 row in set (0.00 sec)
mysql>
填充字符串的函数LPAD(s1,len,s2)和RPAD(s1,len,s2)
lpad(s1,len,s2)返回字符串s1,其左边由字符串s2填补到len字符长度。假如s1的长度大于len,则返回值被缩短至len字符。
mysql> select lpad('yunweijia', 4, '@#'), lpad('yunweijia', 20, '@#');
+----------------------------+-----------------------------+
| lpad('yunweijia', 4, '@#') | lpad('yunweijia', 20, '@#') |
+----------------------------+-----------------------------+
| yunw | @#@#@#@#@#@yunweijia |
+----------------------------+-----------------------------+
1 row in set (0.00 sec)
mysql>
由于字符串yunweijia长度大于4,所以不仅不需要填充,反而需要截取至从左开始4位字符的字符串。
RPAD(s1,len,s2)返回字符串s1,其右边被字符串s2填补至len字符长度。假如字符串s1的长度大于len,则返回值被缩短到len字符长度。
mysql> select rpad('yunweijia', 4, '@#'), rpad('yunweijia', 20, '@#');
+----------------------------+-----------------------------+
| rpad('yunweijia', 4, '@#') | rpad('yunweijia', 20, '@#') |
+----------------------------+-----------------------------+
| yunw | yunweijia@#@#@#@#@#@ |
+----------------------------+-----------------------------+
1 row in set (0.00 sec)
mysql>
由于字符串yunweijia长度大于4,所以不仅不需要填充,反而需要截取至从左开始4位字符的字符串。
删除空格的函数LTRIM(s)、RTRIM(s)和TRIM(s)
ltrim(s)返回字符串s,字符串左侧空格字符被删除;
mysql> select '( yunweijia )', concat('(',ltrim(' yunweijia '),')');
+-----------------+----------------------------------------+
| ( yunweijia ) | concat('(',ltrim(' yunweijia '),')') |
+-----------------+----------------------------------------+
| ( yunweijia ) | (yunweijia ) |
+-----------------+----------------------------------------+
1 row in set (0.00 sec)
mysql>
rtrim(s)返回字符串s,字符串右侧空格字符被删除;
mysql> select '( yunweijia )', concat( '(', rtrim(' yunweijia '), ')' );
+-----------------+--------------------------------------------+
| ( yunweijia ) | concat( '(', rtrim(' yunweijia '), ')' ) |
+-----------------+--------------------------------------------+
| ( yunweijia ) | ( yunweijia) |
+-----------------+--------------------------------------------+
1 row in set (0.00 sec)
mysql>
trim(s)删除字符串s两侧的空格;
mysql> select '( yunweijia )', concat( '(', trim(' yunweijia '), ')' );
+-----------------+-------------------------------------------+
| ( yunweijia ) | concat( '(', trim(' yunweijia '), ')' ) |
+-----------------+-------------------------------------------+
| ( yunweijia ) | (yunweijia) |
+-----------------+-------------------------------------------+
1 row in set (0.00 sec)
mysql>
删除指定字符串的函数TRIM(s1 FROM s)
trim(s1 from s)删除字符串s中两端所有的子字符串s1。s1为可选项,在未指定情况下,删除空格。
mysql> select trim('@#' from '@#@#yunwei@#jia@#@#');
+---------------------------------------+
| trim('@#' from '@#@#yunwei@#jia@#@#') |
+---------------------------------------+
| yunwei@#jia |
+---------------------------------------+
1 row in set (0.00 sec)
mysql>
可以看到,只删除指定字符串两边的内容,中间的内容并不会进行删除。
重复生成字符串的函数REPEAT(s.n)
repeat(s,n)返回一个由重复字符串s组成的字符串,字符串s的数量等于n;
如果n,则返回一个空字符串;
如果s或者n为null,则返回null。
mysql> select repeat('x', 10), repeat('x', 0), repeat('x', null);
+-----------------+----------------+-------------------+
| repeat('x', 10) | repeat('x', 0) | repeat('x', null) |
+-----------------+----------------+-------------------+
| xxxxxxxxxx | | NULL |
+-----------------+----------------+-------------------+
1 row in set (0.00 sec)
mysql>
空格函数SPACE(n)
space(n)返回一个由n个空格组成的字符串。
mysql> select concat('(', space(10), ')');
+-----------------------------+
| concat('(', space(10), ')') |
+-----------------------------+
| ( ) |
+-----------------------------+
1 row in set (0.00 sec)
mysql>
替换函数REPLACE(s,s1,s2)
replace(s,s1,s2)使用字符串s2替代字符串s中所有的字符串s1;
mysql> select replace('yunweijia', 'i', '@#');
+---------------------------------+
| replace('yunweijia', 'i', '@#') |
+---------------------------------+
| yunwe@#j@#a |
+---------------------------------+
1 row in set (0.00 sec)
mysql>
比较字符串大小的函数strcmp(s1,s2)
strcmp(s1,s2):若所有的字符串均相同,则返回0;
若根据当前分类次序,第一个参数小于第二个,则返回-1;
其他情况返回1。
mysql> select strcmp('txt', 'txt'), strcmp('txt', 'txt2'), strcmp('txt2', 'txt');
+----------------------+-----------------------+-----------------------+
| strcmp('txt', 'txt') | strcmp('txt', 'txt2') | strcmp('txt2', 'txt') |
+----------------------+-----------------------+-----------------------+
| 0 | -1 | 1 |
+----------------------+-----------------------+-----------------------+
1 row in set (0.00 sec)
mysql>
获取子串的函数SUBSTRING(s,b,len)和MID(s,n,len)
substring(s,n,len)带有len参数的格式,从字符串s返回一个长度与len字符相同的子字符串,起始于位置n。
也可能对n使用一个负值。假如这样,则子字符串的位置起始于字符串结尾的n字符,即倒数第n个字符,而不是字符串的开头位置。
mysql> select substring('yunweijia', 5, 2) as coll, substring('yunweijia', -3) as coll1, substring('yunweijia', 3) as coss2;
+------+-------+---------+
| coll | coll1 | coss2 |
+------+-------+---------+
| ei | jia | nweijia |
+------+-------+---------+
1 row in set (0.00 sec)
mysql>
匹配子串开始位置的函数
locate(str1,str)、position(str1 in str)和instr(str, str11)三个函数的作用相同,返回子字符串str1在字符串str中的开始位置。
mysql> select locate('wei', 'yunweijia'), position('wei' in 'yunweijia'), instr('yunweijia', 'wei');
+----------------------------+--------------------------------+---------------------------+
| locate('wei', 'yunweijia') | position('wei' in 'yunweijia') | instr('yunweijia', 'wei') |
+----------------------------+--------------------------------+---------------------------+
| 4 | 4 | 4 |
+----------------------------+--------------------------------+---------------------------+
1 row in set (0.00 sec)
mysql>
字符串逆序的函数REVERSE(s)
reverse(s)将字符串s反转,返回的字符串的顺序和s字符串顺序相反。
mysql> select reverse('yunweijia') as coll, reverse('123456789') as coll1;
+-----------+-----------+
| coll | coll1 |
+-----------+-----------+
| aijiewnuy | 987654321 |
+-----------+-----------+
1 row in set (0.00 sec)
mysql>
返回指定位置的字符串的函数
elt(n, str1, str2,...,strn):如果n=1,则返回值为第一个字符串str1;
如果n=2,则返回值为第二个字符串str2;以此类推。
如果n或者大于参数的数目,则返回值为null。
mysql> select elt(1, 'ni1', 'wo1', 'ta') as coll, elt(3, 'ni1', 'wo1', 'ta') as coll_1, elt(0, 'ni1', 'wo1', 'ta') as coll_2, elt(4, 'ni1', 'wo1', 'ta') as coll_3; +------+--------+--------+--------+ | coll | coll_1 | coll_2 | coll_3 | +------+--------+--------+--------+ | ni1 | ta | NULL | NULL | +------+--------+--------+--------+ 1 row in set (0.00 sec) mysql>
返回指定字符串位置的函数FIELD(s,s1,s2,...,sn)
field(s,s1,s2,...,sn)返回字符串s在列表s1,s2,...,sn中第一次出现的位置,如果找不到s,则直接返回0。
如果s为null,则返回时是0。
mysql> select field('w', 'yun', 'yunwei', 'w', 'yunweijia') as coll, field('x', 'yun', 'yunwei', 'w', 'yunweijia') as coll_1, field(null, 'yun', 'yunwei', 'w', 'yunweijia') as coll_2;
+------+--------+--------+
| coll | coll_1 | coll_2 |
+------+--------+--------+
| 3 | 0 | 0 |
+------+--------+--------+
1 row in set (0.00 sec)
mysql>
返回子串位置的函数FIND_IN_SET(s1,s2)
find_in_set(s1,s2)返回字符串s1在字符串列表s2中出现的位置,字符串列表是一个有多个逗号分开的字符串组成的列表。
如果s1不在s2或s2为空字符串,则返回值为0;
如果任意一个参数为null,则返回值为null。
mysql> select find_in_set('X', 'yun,xwei,Xwei,X,jia');
+-----------------------------------------+
| find_in_set('X', 'yun,xwei,Xwei,X,jia') |
+-----------------------------------------+
| 4 |
+-----------------------------------------+
1 row in set (0.00 sec)
mysql>
选取字符串的函数MAKE_SET(x,s1,s2,...,sn)
make_set(x,s1,s2,...,sn)函数按x的二进制数从s1,s2,...,sn中选取字符串。
mysql> select make_set(5, 'a', 'b', 'c', 'd') as coll, make_set(1|4, 'a', 'b', 'c', 'd') as coll_1, make_set(1|4, 'a', 'b', null, 'c', 'd') as coll_2, make_set(0, 'a', 'b', 'c', 'd') as coll_3; +------+--------+--------+--------+ | coll | coll_1 | coll_2 | coll_3 | +------+--------+--------+--------+ | a,c | a,c | a | | +------+--------+--------+--------+ 1 row in set (0.00 sec) mysql>
5的二进制是0101,从右往左的第1位和第3位是1,所以选取a、c;
1的二进制是1,4的二进制是100,进行或操作之后的二进制是101,从右往左的第1位和第3位是1,所以选取a、c;
由于null不参与计算,所以不会添加到结果中,所以coll_2只有a。
终于介绍完啦!小伙伴们,这篇关于《mysql字符串函数详细汇总》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布数据库相关知识,快来关注吧!
Mysql深入了解联表查询的特点
- 上一篇
- Mysql深入了解联表查询的特点
- 下一篇
- 浅谈Mysql时间的存储 datetime还是时间戳timestamp
-
- 数据库 · MySQL | 1天前 |
- MySQL数值函数大全及使用技巧
- 117浏览 收藏
-
- 数据库 · MySQL | 2天前 |
- 三种登录MySQL方法详解
- 411浏览 收藏
-
- 数据库 · MySQL | 3天前 |
- MySQL数据备份方法与工具推荐
- 420浏览 收藏
-
- 数据库 · MySQL | 3天前 |
- MySQL数据备份方法与工具推荐
- 264浏览 收藏
-
- 数据库 · MySQL | 4天前 |
- MySQL索引的作用是什么?
- 266浏览 收藏
-
- 数据库 · MySQL | 5天前 |
- MySQL排序原理与实战应用
- 392浏览 收藏
-
- 数据库 · MySQL | 1星期前 |
- MySQLwhere条件查询技巧
- 333浏览 收藏
-
- 数据库 · MySQL | 1星期前 |
- MySQL常用数据类型有哪些?怎么选更合适?
- 234浏览 收藏
-
- 数据库 · MySQL | 1星期前 |
- MySQL常用命令大全管理员必学30条
- 448浏览 收藏
-
- 数据库 · MySQL | 1星期前 |
- MySQL高效批量插入数据方法大全
- 416浏览 收藏
-
- 数据库 · MySQL | 1星期前 |
- MySQL性能优化技巧大全
- 225浏览 收藏
-
- 数据库 · MySQL | 1星期前 |
- MySQL数据备份4种方法保障安全
- 145浏览 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 485次学习
-
- ChatExcel酷表
- ChatExcel酷表是由北京大学团队打造的Excel聊天机器人,用自然语言操控表格,简化数据处理,告别繁琐操作,提升工作效率!适用于学生、上班族及政府人员。
- 3164次使用
-
- Any绘本
- 探索Any绘本(anypicturebook.com/zh),一款开源免费的AI绘本创作工具,基于Google Gemini与Flux AI模型,让您轻松创作个性化绘本。适用于家庭、教育、创作等多种场景,零门槛,高自由度,技术透明,本地可控。
- 3376次使用
-
- 可赞AI
- 可赞AI,AI驱动的办公可视化智能工具,助您轻松实现文本与可视化元素高效转化。无论是智能文档生成、多格式文本解析,还是一键生成专业图表、脑图、知识卡片,可赞AI都能让信息处理更清晰高效。覆盖数据汇报、会议纪要、内容营销等全场景,大幅提升办公效率,降低专业门槛,是您提升工作效率的得力助手。
- 3405次使用
-
- 星月写作
- 星月写作是国内首款聚焦中文网络小说创作的AI辅助工具,解决网文作者从构思到变现的全流程痛点。AI扫榜、专属模板、全链路适配,助力新人快速上手,资深作者效率倍增。
- 4509次使用
-
- MagicLight
- MagicLight.ai是全球首款叙事驱动型AI动画视频创作平台,专注于解决从故事想法到完整动画的全流程痛点。它通过自研AI模型,保障角色、风格、场景高度一致性,让零动画经验者也能高效产出专业级叙事内容。广泛适用于独立创作者、动画工作室、教育机构及企业营销,助您轻松实现创意落地与商业化。
- 3785次使用
-
- golang中的defer函数理解
- 2022-12-22 366浏览
-
- Golang优雅保持main函数不退出的办法
- 2023-01-07 272浏览
-
- Go语言中函数可变参数(VariadicParameter)详解
- 2023-01-07 312浏览
-
- go语言中函数与方法介绍
- 2023-01-07 297浏览
-
- Go语言中make和new函数的用法与区别
- 2022-12-31 451浏览

