您现在的位置是:首页 >技术教程 >【MySQL函数大揭秘】:让你的数据库操作更高效(一)网站首页技术教程

【MySQL函数大揭秘】:让你的数据库操作更高效(一)

热爱编程的小K 2024-10-26 12:01:03
简介【MySQL函数大揭秘】:让你的数据库操作更高效(一)

前言

✨欢迎来到小KMySQL专栏,本节将为大家带来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(列|字符串):将字符串每个字符转为大写LOWER(列|字符串):将字符串每个字符转为小写,将员工姓名分别转为大写和小写

    SELECT UPPER(ename),LOWER(ename) FROM emp;
    
  • CONCAT(str1,str2,...):将所有字符串连接成一个字符串,将员工的姓名和该员工老板的编号连接在一起

    SELECT CONCAT(ename,mgr) FROM emp;
    
  • REPLACE:(列|字符串,新字符串) 使用新字符串替换旧字符串,将word替换为king

    SELECT REPLACE('hello word','word','king') "替换";
    
  • LENGTH(列|字符串):求字符串长度

    SELECT LENGTH(123466);
    
  • SUBSTR(列|字符串,开始点[,长度]): 字符串截取,截取ing

    SELECT SUBSTR('king word',2,3);
    
  • LEFT(str,len) : 获取字符串左边len个字符组成的字符串,RIGHT(str,len) :获取字符串右边len个字符组成的字符串,MID(str,pos,len) :获取字符串中从pos(第几个)位置开始.长度为len的字符串TRIM(列|字符串):去掉字符串左右空格

    SELECT LEFT('king',2),RIGHT('king',2),MID('king',2,3);
    
  • ASCII(字符) :返回与指定字符对应的十进制整数,CHR(数字) 返回与整数对应的字符

    SELECT ASCII('A'),CHAR(98);
    
  • RPAD:(列|字符串,长度,填充字符),LPAD:(列|字符串,长度,填充字符) 用指定的字符在字符串右或左填充拓展:两边填充

    SELECT RPAD('king',10,'*'),LPAD('king',10,'*');
    SELECT LPAD(RPAD('king',10,'*'),15,'*');
    
  • LTRIM(字符串)、RTRIM(字符串) :去掉字符串左或右的空格TRIM(列|字符串) 去掉字符串左右空格

    SELECT LTRIM('  king  '),RTRIM('  king  '),TRIM('  king  ');
    
  • INSTR:(列|字符串,要查找的字符串,开始位置,出现位置) 查找一个子字符串是否在指定的位置上出现

    SELECT INSTR("king",'ki');
    

字符串函数综合实践:

  1. 把员工姓名首字母大写
SELECT CONCAT(UPPER(LEFT(ename,1)),LOWER(SUBSTR(ename,2))) FROM emp;
  1. 查询出姓名长度是5的所有员工信息
SELECT *FROM emp WHERE LENGTH(ename)=5;
  1. 查询出员工姓名前三个字母是‘JAM’的员工
SELECT * FROM emp WHERE LEFT(ename,3)='JAM';
  1. 查询所有员工信息,但是不显示姓名的前三个字母
SELECT ename, SUBSTR(ename,4) FROM emp; 
# 只显示后三个字符
SELECT ename,SUBSTR(ename,-4) FROM emp;

效果展示:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、数学函数

函数作用
ROUND(数字[,保留位数])根据指定的保留位数对小数进行四舍五入,如果不指定保留位数,则小数点之后的数字全部进行全部四舍五入
TRUNCATE(数字[,截取位数])保留指定位数的小数,如果不指定,则表示不保留
CEIL(数字),CEILING(数字)对小数向上取整
FLOOR(数字)对小数向下取整
RAND([n])随机返回0到1.0之间的小数,如果指定n每次产生的就都是重复的

数学函数练习:

  • ROUND(数字[,保留位数]) : 根据指定的保留位数对小数进行四舍五入,如果不指定保留位数,则小数点之后的数字全部进行全部四舍五入

    SELECT ROUND(3.66);
    SELECT ROUND(3.66,1);
    
  • TRUNCATE(数字[,截取位数]) : 保留指定位数的小数,如果不指定,则表示不保留

    SELECT TRUNCATE(3.889,1); #截断
    
  • CEIL(数字),CEILING(数字):对小数向上取整,FLOOR(数字) 对小数向下取整

    SELECT CEIL(3.66),CEILING(3.99);
    SELECT FLOOR(3.89);
    
  • RAND([n]):随机返回0到1.0之间的小数,如果指定n每次产生的就都是重复的

    SELECT RAND();
    

效果如下:

在这里插入图片描述
在这里插入图片描述

数学函数综合练习:

通过数据库的函数,生成一个六位数字的随机验证码。思路:先生成一个0~1之间的小数,然后乘以100万,然后截断,又因为是生成的0-1之间的小数,所以可能是0.0…这种情况,所以我们最进行填充,保证有六位

SELECT LPAD(TRUNCATE(RAND()*1000000,0),6,'0');

三、总结

✨~MySQL 函数会对传递进来的参数进行处理,并返回一个处理结果,也就是返回一个值。MySQL 包含了大量并且丰富的函数,咱们讲解几十个常用的,剩下的比较罕见的函数我们可以到「✨MySQL 参考手册」查询。

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。