首页 > 数据库 >MySQL常用函数

MySQL常用函数

时间:2024-01-31 13:22:42浏览次数:38  
标签:常用 演示 函数 dual str MySQL 字符串 select

一)字符函数
①length(str)函数
获取参数值的字节个数

对于utf-8字符集来说,一个英文占1个字节;一个中文占3个字节;

对于gbk字符集来说,一个英文占1个字节;一个中文占2个字节;

演示如下:

select length('关注作者') as 长度 from dual;

 


②concat(str1,str2,...)函数
将字符串拼接,通过输入的参数str1、str2等,将他们拼接成一个字符串。

演示如下:

select concat('作者','-','XianBro') as 作者信息 from dual;

 


③upper(str)、lower(str)函数
upper(str):将字符中的所有字母变为大写

lower(str)将字符中的所有字母变成小写

演示如下:

select upper('xianbro') as 大写 from dual; select lower('XIANBRO') as 小写 from dual;

 

 

 


④substr(str,start,len)函数
str为输入字符串,从start位置开始截取字符串,len表示要截取的长度; 没有指定len长度:表示从start开始起,截取到字符串末尾。指定了len长度:表示从start开始起,截取len个长度。

select substr('想学习SQL就关注博主xianBro',2,10) as 截取输出 from dual;

 


注:2是开始位置,此处起始位置为‘学’所对应的位置是1,这和编程语言中的0为起始位置不一样。

此外8是开始到结束位置的长度,并不是索引的结束位置,这很容易和Python的索引弄错

⑤instr(str,要查找的子串)函数
返回子串第一次出现的索引,如果找不到,返回0; 当查找的子串存在于字符串中:返回该子串在字符串中【第一次】出现的索引。当查找的子串不在字符串中:返回0。

演示如下:

select instr('学SQL就关注博主xianbro','关注') as 第一次出现 from dual;

 


⑥trim(str)函数
去掉字符串前后的空格; 该函数只能去掉字符串前后的空格,不能去掉字符串中间的空格。

演示如下:

select trim(' 学SQL就 关注博主 xianbro ') as 空格去除 from dual;

 


⑦lpad(str,len,填充字符)、rpad(str,len,填充字符)函数

lpad(左填充):用指定的字符,实现对字符串左填充指定长度

rpad(右填充):用指定的字符,实现对字符串右填充指定长度

select lpad('编程秃头',10,'tu') as out_put from dual;
select rpad('编程秃头',10,'tu') as out_put dual;

 


注:这里的填充len指的是用填充字符填充后的总长度,也就是若你的len选择5你的字符串含有位置为4则只能填充一个字符,也就是填充字符的第一个字符。

⑧replace(str,子串,另一个字符串)函数
将字符串str中的字串,替换为另一个字符串

演示如下:

select replace(NAME,'符兴','符强') as 替换之后 from tb_teacher;

 


(二)数学函数
①round(x,保留位数)函数

四舍五入; 当对正数进行四舍五入:按照正常的计算方式,四舍五入即可。当对负数进行四舍五入:先把符号丢到一边,对去掉负号后的正数进行四舍五入,完成以后,再把这个负号,补上即可。

演示如下:

select round(1.595658,3) as out_put from dual;

 


②ceil(x)函数
向上取整,返回>=该参数的最小整数。求的是大于等于这个数字的最小整数

演示如下:

select ceil(1.9) as out_put from dual;
​​​​​​​select ceil(1.1) as out_put from daul;

 


③floor(x)函数
向下取整,返回<=该参数的最大整数,求的是小于等于这个数字的最大整数。

演示如下:

select floor(1.99) as out_put from dual;
select floor(1.1) as out_put from dual;

 


④truncate(x,D)函数

此函数叫截断函数,顾名思义就是就是截取不要的部分,然后删掉(断掉)它。在小数点的D位置处,截取数字直接删去数字,若在左边就是位置取整不使用任何法则。

这个函数理解起来也不难,我们把truncate当作小数点(.)x是要截取的数字。D为正数时是小数点的右侧部分,D为0时则不要小数部分,D为负数时是小数点左边部分,具体使用看例子演示。

演示如下:

select truncate(314159.2673525,5) as 截取之后 from dual;
select truncate(314159.2673525,0) as 截取之后 from dual;
select truncate(314159.2673525,-4) as 截取之后 from dual;

 


⑤mod(被除数,除数)函数
取余; 当被除数为正数,结果就是正数。当被除数为负数,结果就是负数。

演示如下:

select mod(10,3) as out_put from dual;

 


⑥pow(x,D)函数
此函数是用于计算指数函数,x为底,D为指数

演示如下:

select pow(5,2) as 平方运算 from dual;

 

 

(三)时间与日期函数
①日期格式
DATE_FORMAT("20000101", '%Y-%m-%d') -- 2020-01-01
DATE_FORMAT("2000-01-01", '%Y-%m-%d') -- 2020-01-01
DATE_FORMAT('2000-05-07 05:06:07', '%H:%i:%s') -- 05:06:07 (24小时制)
DATE_FORMAT('2000-05-07 05:06:07', '%h:%i:%s') -- 05:06:07 (12小时制)
DATE_FORMAT('2000-05-07 05:06:07', '%Y-%m-%d %H:%i:%s') -- 2000-05-07 05:06:07
日期的含义:指的是我们常说的年、月、日。

时间的含义:指的是我们常说的时、分、秒。

补充时间格式符含义表

序号 格式符 含义
1 %Y 四位的年份
2 %y 2位的年份
3 %m 月份(01,02,..11,12)
4 %c 月份(1,2,3...11,12)
5 %d 日(01,02,...)
6 %H 小时(24小时)
7 %h 小时(12小时)
8 %i 分钟(00,01,...59)
9 %s 秒(00,01,...59)

 

②now()函数

返回当前系统的日期和时间

演示如下:

select now() as 当前时间 from dual;

 


③curdate()函数
只返回系统当前的日期,不包含时间

演示如下:

select surdate() as 当前日期;

 


④curtime()函数
只返回当前的时间,不包含日期

演示如下:

 

 

⑤获取日期和时间中的年、月、日、时、分、秒
获取年份:year()

获取月份:month()

获取日:day()

获取小时:hour()

获取分钟:minute()

获取秒数:second()

⑥weekofyear()函数
获取当前时刻所属周数

演示如下:

 

 

⑦ quarter()函数
获取当前时刻所属的季度

 

 

⑧ str_to_date()函数
将日期格式转换为字符串,转换成指定格式的日期

 

 

⑨date_format()函数
将日期转换成日期字符串

 

 

⑩date_add(日期,interval num 时间)函数
向前、向后偏移日期和时间,正号为向后,负号为向前,除此之外还有hour(小时),minute(分钟),second(秒)

 

 

 

⑪last_day()函数
提取某个月最后一天的日期

 

 

⑫datediff(end_date,start_date)函数
计算两个时间相差的天数

演示如下:

 

 

⑬timestampdiff(unit,start_date,end_date)函数
计算两个时间返回的年/月/天数;
unit参数是确定(start_date,end_date)结果的单位,表示为整数,以下是有效单位:

year:年份、month:月份、day:天、hour:小时、minute 分钟、second:秒、microsecond:微秒、week:周数、quarter:季度

 


(四) 流程操作函数

①if(expr,v1,v2)函数
实现if-else的效果,如果expr是true,返回v1。如果expr是false,返回v2

演示如下

 

 

 

②ifnull()函数
判断值是否为null,是null用指定值填充;如果v1不为NULL,返回v2。否则返回v1

 

 

 

③case…when函数的三种用法
1.等值判断:可以实现多条件的查询值赛选;

case 要判断的字段或表达式
when 常量1 then 要显示的值1或语句1
when 常量2 then 要显示的值2或语句2
...
else 要显示的值n或语句n
end

 

 

2.区间判断:类似于python中if-elif-else的效果;

case
when 条件1 then 要显示的值1或语句1
when 条件2 then 要显示的值2或语句2
...
else 要显示的值n或语句n
end

 

 

3.case … when和聚合函数联用;

此处的实例,作者引用网上的一个例子进行举例

 

 

 

④DISTINCT去重
distinct是用于去重,但是只能放在查询字段的开头:

select username,distinct pwd from user //会报错!!!只能放在username前
(五)系统信息函数
①version()函数
查看MySQL系统版本信息号

 

 

②connection_id()函数
查看当前登入用户的连接次数数

直接调用CONNECTION_ID()函数--不需任何参数--就可以看到当下连接MySQL服务器的连接次数,不同时间段该函数返回值可能是不一样的

 

 

③processlist
查看用户的连接信息

 

 

 

Id列:登录MySQL的用户标识,是系统自动分配的CONNECTION ID;

User列:显示当前的“用户名”;

Host列:显示执行这个语句的IP,用来追踪出现问题语句的用户;

db列:显示这个进程目前连接的是哪个数据库;

Command列:显示当前连接执行的命令,一般是休眠(Sleep)、查询(Query)、连接(Connect);

Time列:显示这个状态持续的时间,单位是秒;

State列:显示使用当前连接的SQL语句的状态,包含有:Copying to tmptable、Sorting result、Sending data等状态;

Info列:显示当前SQL的内容,如果语句过长可能无法显示完全。

④database(),schema()函数
查看当前使用的数据库

 

 

 

⑤user(),current_user(),system_user()函数
获取当前用户

 

 

⑥charset()函数
使用CHARSET()函数返回字符串使用的字符集

 

 

⑦collation()函数
使用COLLATION()函数返回字符串排列方式

 

 

(六) 其他函数
①FORMAT(x,y)函数
把x格式化为以逗号隔开的数字序列,y是结果的小数位数。

 

 

②md5(str)函数 加密函数;
参数为字符串,该函数为字符串算出一个MD5 128比特校验和
返回值以32位16进制数字的二进制字符串形式返回
str为NULL,返回NULL

 

 

 

③encode(str,pswd_str)、decode(加密的字符串,pswd_str)函数

加密:encode(被加密的密码,密码);

解密:decode(encode(被加密的密码,密码),密码); //也可以用上面返回的二进制字符串

(七)聚合函数
①功能与分类
功能:用作统计使用,又称为聚合函数或统计函数或组函数

分类:sum 求和avg 平均值max 最大值min 最小值count 计算个数

 

 

 

②聚合函数的传入参数,数据类型

1、sum()函数和avg()函数:传入整型/小数类型才有意义;

2、sum()函数和avg()函数对于字符串类型、日期/时间类型的计算都没有太大意义。因此,sum()函数和avg()函数,我们只用来对小数类型和整型进行求和。跳过空值行。

3、max()函数和min()函数:传入整型/小数类型、日期/时间类型意义较大

4、可以传入任何数据类型,但是碰到null要注意,空值跳过,不计数。

注;sum()/count(*)方法计算平均值时,有时候得到的结果和AVG()函数不一定一样。当存在某计算列空值但其他列不是空值的时候就会出现不一样的结果,因为分母count(*)并没有跳过空值列。

 

原文链接:https://blog.csdn.net/weixin_49493223/article/details/130923393

搜索

复制

标签:常用,演示,函数,dual,str,MySQL,字符串,select
From: https://www.cnblogs.com/furenjian/p/17999069

相关文章

  • 无涯教程-Label with Continue函数
    在"continue"或"break"语句及其Label名称之间不允许使用换行符。outerloop://Thisisthelabelnamefor(vari=0;i<3;i++){console.log("Outerloop:"+i);for(varj=0;j<5;j++){if(j==3){con......
  • [office] Excel的if函数应用小盘点
    今天跟大家分享下if函数的用法IF函数可以单条件、多条件、嵌套条件或是搭配其他函数一起使用。首先介绍一下IF函数的基本语法IF函数语法如下:if(条件判断,返回值1,返回值2),如条件判断结果为真,则输出返回值1,否则输出返回值2。返回值可以是固定的数值、字符,也可以是空值或计算表达式。......
  • [office] 财务必须熟练使用的15个函数公式,超详细参数详解+举例!
    又到了咱们的Excel技巧课堂分享时刻,一名会计,势必要成为一名表格高手,才能在职场中乘风破浪。不然一个公式参数设置都要10分钟,按时下班怕是不可能,升职加薪更是无望了!今天蛙蛙给大家分享的就是Excel学习逃不开的函数公式,以参数详解+举例的方式,给大家讲讲咱们经常用到的15个公式。一定......
  • sql之窗口函数详解
    官方地址https://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html窗口函数:也可以被称为OLAP函数或分析函数。窗口......
  • 无涯教程-Label with Break函数
    Label标签语句可以为一行语句添加标签,以便在复杂结构中,设置跳转目标outerloop://Thisisthelabelnamefor(vari=0;i<5;i++){console.log("Outerloop:"+i);innerloop:for(varj=0;j<5;j++){if(j>3)break;......
  • Langchain中改进RAG能力的3种常用的扩展查询方法
    有多种方法可以提高检索增强生成(RAG)的能力,其中一种方法称为查询扩展。我们这里主要介绍在Langchain中常用的3种方法查询扩展技术涉及对用户的原始查询进行细化,以生成更全面和信息丰富的搜索。使用扩展后的查询将从向量数据库中获取更多相关文档。1、StepBackPromptingTake......
  • mysql 创建数据库、创建用户
    --设置密码SHOWVARIABLESLIKE'validate_password%';setglobalvalidate_password_check_user_name='ON';setglobalvalidate_password_policy='LOW';setglobalvalidate_password_length=6; --创建数据库createdatabaseifnotex......
  • vue3 在 TypeScript 文件中,const route = useRoute();route undefined 不能在顶层作用
    ts文件内部不能使用import{useRoute}from'vue-router';constroute=useRoute();routeundefined在TypeScript文件中,不能在顶层作用域内使用Vue组件的Hooks函数,例如useRoute。Hooks函数只能在Vue组件中使用。如果你想在TypeScript文件中获取当前路由信息,你可......
  • 无涯教程-The do…while 循环函数
    do…while循环与while循环类似,不同之处在于 do...while循环在第一次执行循环时不会判断条件。换句话说,至少执行一次。do…whileloop-流程图以下是while循环的语法。do{Statement(s)tobeexecuted;}while(expression);注意-不要错过 do...while循......
  • 面试官:请说一下Mysql中count(1)、count(*)以及count(列)的区别?
    近期在Review项目代码时,发现同事们在查询MySQL行数时存在多样的方式,有的使用COUNT(1),有的用COUNT(id),还有人选择了COUNT(*)。这混杂的选择引发了我的思考。当然这三种count的方式也是众说纷纭,其中最大的分歧点就是COUNT(*)和COUNT(1)查询性能上,有人觉得COUNT(*)需要转换为COUN......