MySQL --- 常用函数 - 字符串函数
Posted 小雪菜本菜
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL --- 常用函数 - 字符串函数相关的知识,希望对你有一定的参考价值。
函数
mysql 函数会对传递进来的参数进行处理,并返回一个处理结果,也就是返回一个值。
MySQL 包含了大量并且丰富的函数,咱们讲解几十个常用的,剩下的比较罕见的函数我们可以到「MySQL 参考手册」查询。
字符串函数
函数 | 作用 |
UPPER(列|字符串) | 将字符串每个字符转为大写 |
LOWER(列|字符串) | 将字符串每个字符转为小写 |
CONCAT(str1,str2,. . . ) | 将所有字符串连接成一个字符串 |
REPLACE(列|字符串,旧字符串,新字符串) | 使用新字符串替换旧字符串 |
LENGTH(列|字符串) | 求字符串长度 |
SUBSTR(列|字符串,开始点[,长度]) | 字符串截取 |
LEFT(str,len) | 获取字符串左边len个字符组成的字符串 |
RIGHT(str,len) | 获取字符串右边len个字符组成的字符串 |
MID(str,pos,len) | 获取字符串中从pos(第几个)位置开始,长度为len的字符串 |
ASCII(字符) | 返回与指定字符对应的十进制整数 |
CHR(数字) | 返回与整数对应的字符 |
RPAD(列|字符串,长度,填充字符) LPAD(列|字符串,长度,填充字符) | 用指定的字符在字符串右或左填充 |
LTRIM(字符串)、RTRIM(字符串) | 去掉字符串左或右的空格 |
TRIM(列|字符串) | 去掉字符串左右空格 |
INSTR(列|字符串,要查找的字符串,开始位置,出现位置) | 查找一个子字符串是否在指定的位置上出现 |
UPPER(列|字符串) 将字符串每个字符转为大写
如果用 emp 表可以发现测试数据输出了很多次,因为 emp 表中有很多条数据,每一条数据都要执行一下
使用MySQL中的虚拟表,只有一行数据,正好可以用来进行测试函数,也可以不写
LOWER(列|字符串) 将字符串每个字符转为小写
可以发现,如果大小写相结合,使用 LOWER 后全部变成小写
CONCAT(str1,str2,. . . ) 将所有字符串连接成一个字符串
字符串用单引号和双引号都可以
如果字符串中有引号 ' ' ',需要用转义字符 ' \\ ' 进行转义
REPLACE(列|字符串,旧字符串,新字符串) 使用新字符串替换旧字符串
LENGTH(列|字符串) 求字符串长度
获取字符串左边 2 个字符组成的字符串、获取字符串右边 2 个字符组成的字符串、获取字符串中间 2 个字符组成的字符串
LEFT(str,len) | 获取字符串左边len个字符组成的字符串 |
RIGHT(str,len) | 获取字符串右边len个字符组成的字符串 |
MID(str,pos,len) | 获取字符串中从pos(第几个)位置开始,长度为len的字符串 |
SELECT LEFT('hello',2),RIGHT('hello',2),MID('case',2,2);
ASCII(字符) 返回与指定字符对应的十进制整数
SELECT ASCII('A');
CHR(数字) 返回与整数对应的字符
SELECT CHAR(65);
RPAD(列|字符串,长度,填充字符) LPAD(列|字符串,长度,填充字符) 用指定的字符在字符串右或左填充
SELECT RPAD('Hello',10,'*'),LPAD('Hello',10,'*');
在左右两边各填充 5 个 ' * ',先填充右边,把整个当成一个字符串,在前面填充 ' * '
SELECT LPAD(RPAD('Hello',10,'*'),15,'*');
去掉字符串左或右的空格、去掉字符串左右空格
LTRIM(字符串)、RTRIM(字符串) | 去掉字符串左或右的空格 |
TRIM(列|字符串) | 去掉字符串左右空格 |
SELECT LTRIM(' 123 *') 左,RTRIM('* 123 ') 右,TRIM(' 123 ') AS 'All';
不能去掉字符串中间的空格
INSTR(列|字符串,要查找的字符串,开始位置,出现位置) 查找一个子字符串是否在指定的位置上出现
SELECT INSTR('我爱C语言','C语言');
没有查找到的情况
1.把员工姓名首字母大写 Smith
SELECT UPPER(LEFT(ename,1)) FROM emp;
SELECT UPPER(LEFT(ename,1)),LOWER(SUBSTR(ename,2)) FROM emp;
SELECT CONCAT(UPPER(LEFT(ename,1)),LOWER(SUBSTR(ename,2))) FROM emp;
2.查询出姓名长度是 5 的所有员工信息 或者使用模糊查询 LIKE MySQL --- 数据库查询 - 条件查询
SELECT * FROM emp WHERE LENGTH(ename)=5;
3.查询出员工姓名前三个字母是'JAM'的员工,截取开始点和长度
SELECT * FROM emp WHERE SUBSTR(ename,1,3)='JAM';
4.查询所有员工信息,但是不显示姓名的前三个字母
SUBSTR(列|字符串,开始点[,长度]) 字符串截取
SELECT ename 原始字符串,SUBSTR(ename,3) AS '子串' FROM emp;
查询所有员工信息,但是只显示姓名的后三个字母
SUBSTR(列|字符串,开始点[,长度]) 字符串截取
SELECT ename 原始字符串,SUBSTR(ename,-3) AS '子串' FROM emp;
MySQL常用函数汇总——字符串操作函数
- LENGTH 计算字符串长度函数,返回字符串的字节长度
mysql> SELECT LENGTH(‘name‘),LENGTH(‘数据库‘); +----------------+---------------------+ |LENGTH(‘name‘) | LENGTH(‘数据库‘) | +----------------+---------------------+ | 4 | 9 | +----------------+---------------------+ 1 row in set (0.04 sec)
- CONCAT 合并字符串函数,返回结果为连接参数产生的字符串,可以有多个参数
mysql> SELECT CONCAT(‘MySQL‘,‘5.7‘),CONCAT(‘MySQL‘,NULL); +-----------------------+----------------------+ | CONCAT(‘MySQL‘,‘5.7‘) | CONCAT(‘MySQL‘,NULL) | +-----------------------+----------------------+ | MySQL5.7 | NULL | +-----------------------+----------------------+ 1 row in set (0.03 sec)
- INSERT 替换字符串
mysql> SELECT INSERT(‘Football‘,2,4,‘Play‘) AS col1, -> INSERT(‘Football‘,-1,4,‘Play‘) AS col2, -> INSERT(‘Football‘,3,20,‘Play‘) AS col3; +----------+----------+--------+ | col1 | col2 | col3 | +----------+----------+--------+ | FPlayall | Football | FoPlay | +----------+----------+--------+ 1 row in set (0.04 sec)
- LOWER 字母转换为小写
mysql> SELECT LOWER(‘BLUE‘),LOWER(‘Blue‘); +---------------+---------------+ | LOWER(‘BLUE‘) | LOWER(‘Blue‘) | +---------------+---------------+ | blue | blue | +---------------+---------------+ 1 row in set (0.03 sec)
- UPPER 字母转换为大写
mysql> SELECT UPPER(‘green‘),UPPER(‘Green‘); +----------------+----------------+ | UPPER(‘green‘) | UPPER(‘Green‘) | +----------------+----------------+ | GREEN | GREEN | +----------------+----------------+ 1 row in set (0.03 sec)
- LEFT 从左侧字截取符串,返回字符串左边的若干个字符
mysql> SELECT LEFT(‘MySQL‘,2); +-----------------+ | LEFT(‘MySQL‘,2) | +-----------------+ | My | +-----------------+ 1 row in set (0.04 sec)
- RIGHT 从右侧字截取符串,返回字符串右边的若干个字符
mysql> SELECT RIGHT(‘MySQL‘,3); +------------------+ | RIGHT(‘MySQL‘,3) | +------------------+ | SQL | +------------------+ 1 row in set (0.00 sec)
- TRIM 删除字符串左右两侧的空格
mysql> SELECT ‘[ mobile ]‘,CONCAT(‘[‘,TRIM(‘ mobile ‘),‘]‘); +----------------+--------------------------------------+ | [ mobile ] | CONCAT(‘[‘,TRIM(‘ mobile ‘),‘]‘) | +----------------+--------------------------------------+ | [ mobile ] | [mobile] | +----------------+--------------------------------------+ 1 row in set (0.07 sec)
- REPLACE 替换字符串
mysql> SELECT REPLACE(‘aaa.mysql.com‘,‘a‘,‘w‘); +----------------------------------+ | REPLACE(‘aaa.mysql.com‘,‘a‘,‘w‘) | +----------------------------------+ | www.mysql.com | +----------------------------------+ 1 row in set (0.00 sec)
- SUBSTRING 截取字符串
mysql> SELECT SUBSTRING(‘computer‘,3) AS col1, -> SUBSTRING(‘computer‘,3,4) AS col2, -> SUBSTRING(‘computer‘,-3) AS col3, -> SUBSTRING(‘computer‘,-5,3) AS col4; +--------+------+------+------+ | col1 | col2 | col3 | col4 | +--------+------+------+------+ | mputer | mput | ter | put | +--------+------+------+------+ 1 row in set (0.00 sec)
- REVERSE 反转字符串
mysql> SELECT REVERSE(‘hello‘); +------------------+ | REVERSE(‘hello‘) | +------------------+ | olleh | +------------------+ 1 row in set (0.00 sec)
以上是关于MySQL --- 常用函数 - 字符串函数的主要内容,如果未能解决你的问题,请参考以下文章