MySQL-字符串函数

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: MySQL-字符串函数

计算字符串长度的函数

CHAR_LENGTH(str) 、LENGTH(str)

例1:返回字符串的字符个数,汉字和数字或字母都是1个。

1. mysql> select char_length('zhangsan'),char_length('lisi');
2. +-------------------------+---------------------+
3. | char_length('zhangsan') | char_length('lisi') |
4. +-------------------------+---------------------+
5. |                       8 |                   4 |
6. +-------------------------+---------------------+
7. 1 row in set (0.00 sec)

例2:返回字符串的字节长度,使用 utf8 编码字符集时,一个汉字是3个字节,一个数字或字母是1个字节

1. mysql> select length('张三'),length('zhangsan');
2. +------------------+--------------------+
3. | length('张三')   | length('zhangsan') |
4. +------------------+--------------------+
5. |                6 |                  8 |
6. +------------------+--------------------+
7. 1 row in set (0.00 sec)

合并字符串的函数


CONCAT(s1,s2,...) 、CONCAT_WS(x,s1,s2,...)

例1:合并多个字符串

1. mysql> select concat('北京','海淀');
2. +---------------------------+
3. | concat('北京','海淀')     |
4. +---------------------------+
5. | 北京海淀                  |
6. +---------------------------+
7. 1 row in set (0.01 sec)

例2:中间使用指定分隔符号,合并多个字符串

1. mysql> select concat_ws('-','北京','海淀','中关村');
2. +----------------------------------------------+
3. | concat_ws('-','北京','海淀','中关村')        |
4. +----------------------------------------------+
5. | 北京-海淀-中关村                             |
6. +----------------------------------------------+
7. 1 row in set (0.00 sec)

替换字符串的函数


INSERT(s1,x,len,s2)

例:从abcde的第二个字符开始,到第三个字符修改成1234

1. mysql> select insert('abcde',2,3,'1234');
2. +----------------------------+
3. | insert('abcde',2,3,'1234') |
4. +----------------------------+
5. | a1234e                     |
6. +----------------------------+
7. 1 row in set (0.00 sec)

转换大小写的函数


LOWER(str) 、LCASE(str) 、UPPER(str) 、UCASE(str)

例1:将大写字符串修改为小写,如果本身是小写则返回依旧是小写

1. mysql> select lower('FILE'),lower('text');
2. +---------------+---------------+
3. | lower('FILE') | lower('text') |
4. +---------------+---------------+
5. | file          | text          |
6. +---------------+---------------+
7. 1 row in set (0.00 sec)

例2:将大写字母转换为小写字母

1. mysql> select lcase('FILE'),lcase('TExt');
2. +---------------+---------------+
3. | lcase('FILE') | lcase('TExt') |
4. +---------------+---------------+
5. | file          | text          |
6. +---------------+---------------+
7. 1 row in set (0.00 sec)

例3:将小写字母转换成大写字母

1. mysql> select upper('BACKup'),upper('file');
2. +-----------------+---------------+
3. | upper('BACKup') | upper('file') |
4. +-----------------+---------------+
5. | BACKUP          | FILE          |
6. +-----------------+---------------+
7. 1 row in set (0.00 sec)

例4:将小写字母转换为大写字母

1. mysql> select ucase('backup'),ucase('File');
2. +-----------------+---------------+
3. | ucase('backup') | ucase('File') |
4. +-----------------+---------------+
5. | BACKUP          | FILE          |
6. +-----------------+---------------+
7. 1 row in set (0.00 sec)

获取指定长度的字符串的函数


LEFT(s,n) 、RIGHT(s,n)

例1:获取字符串最左侧开始的五个字符。

1. mysql> select left('abcdefg',5);
2. +-------------------+
3. | left('abcdefg',5) |
4. +-------------------+
5. | abcde             |
6. +-------------------+
7. 1 row in set (0.00 sec)

例2:获取字符串最右侧开始的第三个字符。

1. mysql> select right('abcdefg',3);
2. +--------------------+
3. | right('abcdefg',3) |
4. +--------------------+
5. | efg                |
6. +--------------------+
7. 1 row in set (0.00 sec)

填充字符串的函数


LPAD(s1,len,s2) 、RPAD(s1,len,s2)

例1:填充字符串,字符串大于4则不需要填充,直接被缩短到hell;字符串小于10则需要从左侧填充至10位,如果“s2”字符串不够,则重新排序(如:12312312)。

1. mysql> select lpad('hello',4,'123'),lpad('hello',10,'123');
2. +-----------------------+------------------------+
3. | lpad('hello',4,'123') | lpad('hello',10,'123') |
4. +-----------------------+------------------------+
5. | hell                  | 12312hello             |
6. +-----------------------+------------------------+
7. 1 row in set (0.00 sec)

例2:填充字符串,和上方相同,只是填充方式为右侧。

1. mysql> select rpad('hello',4,'123'),rpad('hello',10,'123');
2. +-----------------------+------------------------+
3. | rpad('hello',4,'123') | rpad('hello',10,'123') |
4. +-----------------------+------------------------+
5. | hell                  | hello12312             |
6. +-----------------------+------------------------+
7. 1 row in set (0.00 sec)

删除空格的函数


LTRIM(s) 、RTRIM(s) 、TRIM(s)

例1:ltrim删除" hello world "左侧空格,下面可以看到仅删除了左侧空格,中间和右侧空格还在(因显示问题,可能看不出来)。

1. mysql> select ltrim( 'hello world' );
2. +------------------------+
3. | ltrim( 'hello world' ) |
4. +------------------------+
5. | hello world            |
6. +------------------------+
7. 1 row in set (0.00 sec)

例2:rtrim删除" hello world "右侧空格(和ltrim命令类似,只是本次删除的右侧空格),下面可以看到仅删除了右侧空格,中间和左侧空格还在(因显示问题,可能看不出来)。

1. mysql> select rtrim( 'hello world' );
2. +------------------------+
3. | rtrim( 'hello world' ) |
4. +------------------------+
5. | hello world            |
6. +------------------------+
7. 1 row in set (0.00 sec)

例3:trim删除" hello world "左右两侧空格,下面可以看到仅删除了左右侧空格,中间还在(因显示问题,可能看不出来)。

1. mysql> select trim( 'hello world' );
2. +-----------------------+
3. | trim( 'hello world' ) |
4. +-----------------------+
5. | hello world           |
6. +-----------------------+
7. 1 row in set (0.00 sec)

删除指定字符串的函数


TRIM(s1 FROM s)

例:删除字符串左右两端的ab。

1. mysql> select trim('ab' from 'ab12ab3ab');
2. +-----------------------------+
3. | trim('ab' from 'ab12ab3ab') |
4. +-----------------------------+
5. | 12ab3                       |
6. +-----------------------------+
7. 1 row in set (0.00 sec)

重复生成字符串的函数


REPEAT(s,n)

例1:生成三次'abc'

1. mysql> select repeat('abc',3);
2. +-----------------+
3. | repeat('abc',3) |
4. +-----------------+
5. | abcabcabc       |
6. +-----------------+
7. 1 row in set (0.01 sec)

例2:插入a表 ’张三‘ 循环三次

1. mysql> insert into a values(repeat('张三',3));
2. Query OK, 1 row affected (0.05 sec)
3. 
4. mysql> select * from a;
5. +--------------------+
6. | name               |
7. +--------------------+
8. | 张三张三张三       |
9. +--------------------+
10. 1 row in set (0.00 sec)

空格函数


SPACE(n)

例:生成10个空格

1. mysql> select space(10);
2. +------------+
3. | space(10)  |
4. +------------+
5. |            |
6. +------------+
7. 1 row in set (0.00 sec)

替换函数


REPLACE(s,s1,s2)

例:根据内容替换字符串,但需要注意合理替换。如下所示,替换abc为全部替换,可能没有达到自己想达到的替换。

1. mysql> select replace('xxx.mysql.com','x','w');
2. +----------------------------------+
3. | replace('xxx.mysql.com','x','w') |
4. +----------------------------------+
5. | www.mysql.com                    |
6. +----------------------------------+
7. 1 row in set (0.01 sec)
8. 
9. mysql> select replace('abc.mysql.abcd','abc','www');
10. +----------------------------------------+
11. | replace('abc.mysql.abcd','abc','www') |
12. +----------------------------------------+
13. | www.mysql.wwwd                       |
14. +----------------------------------------+
15. 1 row in set (0.00 sec)

比较字符串大小的函数


STRCMP(s1,s2)

例:字符串相同,返回结果为0;字符串s1大于s2,返回结果为1(这里b比a大);字符串s1小于s2,返回结果为-1

1. mysql> select strcmp('abc','abc');
2. +---------------------+
3. | strcmp('abc','abc') |
4. +---------------------+
5. |                   0 |
6. +---------------------+
7. 1 row in set (0.00 sec)
8. 
9. mysql> select strcmp('bbc','abc');
10. +---------------------+
11. | strcmp('bbc','abc') |
12. +---------------------+
13. |                   1 |
14. +---------------------+
15. 1 row in set (0.00 sec)
16. 
17. mysql> select strcmp('bbc','cbc');
18. +---------------------+
19. | strcmp('bbc','cbc') |
20. +---------------------+
21. |                  -1 |
22. +---------------------+
23. 1 row in set (0.00 sec)

获取子字符串的函数


SUBSTRING(s,n,len) 、MID(s,n,len)

例1:SUBSTRING(s,n,len) 用于获取指定位置的子字符串

1. mysql> SELECT SUBSTRING('breakfast',5) AS col1, # 从第5个字符串开始获取
2.  -> SUBSTRING('breakfast',5,3) AS col2,         # 从第5个字符串开始,获取3个
3.  -> SUBSTRING('breakfast',-5) AS col3,          # (倒向)从第5个字符串开始获取
4.  -> SUBSTRING('breakfast',-5,3) AS col4;        # (倒向)从第5个字符串开始获取,获取3个
5. +-------+------+-------+------+
6. | col1 | col2 | col3 | col4 |
7. +-------+------+-------+------+
8. | kfast | kfa | kfast | kfa |
9. +-------+------+-------+------+

例2:MID(s,n,len) 用于获取指定位置的子字符串

1. mysql> SELECT MID('breakfast',5) AS col1,       # 从第5个字符串开始获取
2.  -> MID('breakfast',5,3) AS col2,               # 从第5个字符串开始,获取3个
3.  -> MID('breakfast',-5) AS col3,                # (倒向)从第5个字符串开始获取
4.  -> MID('breakfast',-5,3) AS col4;              # (倒向)从第5个字符串开始获取,获取3个
5. +-------+------+-------+------+
6. | col1 | col2 | col3 | col4 |
7. +-------+------+-------+------+
8. | kfast | kfa | kfast | kfa |
9. +-------+------+-------+------+

匹配子字符串开始位置的函数


LOCATE(str1,str) 、POSITION(str1 IN str) 、INSTR(str, str1)

下面三种用结果及用法相同,只有字符串位置不同。

例1:返回字符串'def'在字符串'abcdefg'中匹配到的位置,所以返回结果为4

1. mysql> select locate('def','abcdefg');
2. +-------------------------+
3. | locate('def','abcdefg') |
4. +-------------------------+
5. |                       4 |
6. +-------------------------+
7. 1 row in set (0.00 sec)

例2:返回字符串'def'在字符串'abcdefg'中匹配到的位置,所以返回结果为4

1. mysql> select position('def' in 'abcdefg');
2. +------------------------------+
3. | position('def' in 'abcdefg') |
4. +------------------------------+
5. |                            4 |
6. +------------------------------+
7. 1 row in set (0.00 sec)

例3:返回字符串'def'在字符串'abcdefg'中匹配到的位置,所以返回结果为4

1. mysql> select instr('abcdefg','def');
2. +------------------------+
3. | instr('abcdefg','def') |
4. +------------------------+
5. |                      4 |
6. +------------------------+
7. 1 row in set (0.00 sec)

反转字符串的函数


REVERSE(s)

例:使字符串的反转

1. mysql> select reverse('abcde');
2. +------------------+
3. | reverse('abcde') |
4. +------------------+
5. | edcba            |
6. +------------------+
7. 1 row in set (0.00 sec)

返回指定位置的字符串的函数


ELT(n, s1, s2, s3, .....)

例:返回第个n个字符串的值,如果n超出全部值的范围,则返回null

1. mysql> select elt(3,'a','b','c','d','e'),elt(6,'a','b','c','d','e');
2. +----------------------------+----------------------------+
3. | elt(3,'a','b','c','d','e') | elt(6,'a','b','c','d','e') |
4. +----------------------------+----------------------------+
5. | c                          | NULL                       |
6. +----------------------------+----------------------------+
7. 1 row in set (0.00 sec)

返回指定字符串位置的函数


FIELD(s, s1, s2, .....)

例:返回s在列表中的位置,如果列表中不存在则返回0

1. mysql> select field('hello','a','b','hello','d'),field('a','hello','world');
2. +------------------------------------+----------------------------+
3. | field('hello','a','b','hello','d') | field('a','hello','world') |
4. +------------------------------------+----------------------------+
5. |                                  3 |                          0 |
6. +------------------------------------+----------------------------+
7. 1 row in set (0.00 sec)

返回子字符串位置的函数


FIND_IN_SET(s1, s2)

例:返回s1在列表中的位置,如果列表中不存在则返回0

1. mysql> select find_in_set('hello','a,b,hello,d'),find_in_set('hello','a,b,c');
2. +------------------------------------+------------------------------+
3. | find_in_set('hello','a,b,hello,d') | find_in_set('hello','a,b,c') |
4. +------------------------------------+------------------------------+
5. |                                  3 |                            0 |
6. +------------------------------------+------------------------------+
7. 1 row in set (0.00 sec)


相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
关系型数据库 MySQL
MySQL中的字符串函数有哪些?
本文介绍了几个常用的字符串函数,包括计算字符串字符数的`CHAR_LENGTH`、计算字符串长度的`LENGTH`、合并字符串的`CONCAT`和`CONCAT_WS`、替换字符串的`INSERT`,以及字母大小写转换的`LOWER`、`LCASE`、`UPPER`和`UCASE`。每个函数都有详细的说明和示例。
MySQL中的字符串函数有哪些?
|
前端开发 关系型数据库 MySQL
MySQL中常用函数之字符串函数使用详解
MySQL中常用函数之字符串函数使用详解
269 0
|
6月前
|
关系型数据库 MySQL 数据库
MySQL数据库——函数-字符串函数、数值函数、日期函数、流程函数
MySQL数据库——函数-字符串函数、数值函数、日期函数、流程函数
54 2
|
6月前
|
SQL 关系型数据库 MySQL
MySQL魔法秀:揭秘常用字符串函数的神奇操作
MySQL魔法秀:揭秘常用字符串函数的神奇操作
46 1
|
关系型数据库 MySQL
[MySQL]字符串函数
[MySQL]字符串函数
|
7月前
|
SQL 关系型数据库 MySQL
|
7月前
|
SQL 关系型数据库 MySQL
MySQL 数值函数,字符串函数与多表查询
MySQL 数值函数,字符串函数与多表查询
40 0
|
7月前
|
SQL 关系型数据库 MySQL
⑥ 【MySQL函数】字符串函数、数值函数、日期函数、流程函数
⑥ 【MySQL函数】字符串函数、数值函数、日期函数、流程函数
70 0
|
SQL 关系型数据库 MySQL
Mysql数据库 5.SQL语言聚合函数 语言日期-字符串函数
Mysql数据库 5.SQL语言聚合函数 语言日期-字符串函数
84 0
|
关系型数据库 MySQL
Mysql字符串函数
Mysql字符串函数
62 0