八,mysql数据库之 常用函数【字符串,时间,数值】查询

目录

一,字符串函数

二,数值函数

三,时间函数

四,判断函数

五,分支流程


一,字符串函数

1,长度函数 length(字符串)

select length('我是一个字符串');  -- gbk编码 一个中文占据2个字符  utf8编码格式 一个中文字符占据3个字符
select length('abcde');  --- 5个字符
---仅这个函数 返回的是字符编码集合 内存里面的字符长度

2,替换函数 replace(字段列,旧字符串,新字符串)

---应用场景  替换某一列中 包含某某字符串 修改成某某字符
--替换 student 表名 s_id 开始的字符 为B
select REPLACE(s_id,'A','B') from student;

3,拼接函数  concat(字符串1,字符串2,字符串3,……)

--字符串连接函数 concat(str1,str2,……)   参数1 字符串 参数2 字符串 可以有多个参数 返回的结果是拼接这些字符串;
select concat('python-','mysql');

4,大小写函数 lower upper

--字符串的转换函数  upper(字符串) lower(字符串)  
select upper('hi');  --HI
select lower('HI');  --hi
--应用场景 数据整理 把英文的 或者带小写不规范的都整理成统一格式的 

5,截取函数 substr

--字符串截取函数    substr(字符串,int开始的下标,int结束的下标)  最后一个参数是可选参数 如果不填写 就是从开始到后面全部
-- mysql中字符串 是从1开始的
select substr('himysql',1,2); --hi
select substr('himysql',3);--mysql
select substr('himysql',3,7); --mysql
---应用场景 数据清洗
--这个表 前面都有红楼梦 我们可以清晰掉 只要后面的字符
select lpad(name, 6, '红楼梦') from student where name like '___';

6,填充函数  lpad rpad

--填充字符串函数  lpad(字符串,int填充的长度,str填充的字符串类型)
select lpad('我是字符串',8,'*'); --**我是字符串
select rpad('我是字符串',9,'*'); --我是字符串***

7,判断字符串是否存在  instr


--判断字符串是否存在的函数 instr(原始字符串,要查找的字符串) 
select instr('北京大学','大') ; --1  true
select instr('北京大学','小') ; --0  flase
---应用场景 等同于 like 模糊查询
select * from 表名 where 字段 like '%或者_'

8,去除空格函数 trim ltrim rtrim

--去除空格函数   trime(字符串)  ltrime(字符串)  rtime(字符串)
select trim('   mysql   ');  --mysql
select ltrim('   mysql   ');  --mysql       去除左边空格
select rtrim('   mysql   ');  --    mysql     去除右边空格
---应用场景 数据整理

二,数值函数

1,四舍五入函数 round(浮点数值,小数点后面保留几位)  参数都是int类型

--四舍五入函数 round(数值,小数点后保留的长度)  截取长度后面一个数值然后进行四舍五入
select round(3.11,1); --3.1
select round(3.19,1); -- 3.2
select round(3.112,2);--3.11
select round(3.119,2); --3.12

2,截取函数(非四舍五入)  truncate(浮点数值,小数点后面保留几位) 参数都是int类型

--不四舍五入 纯截断函数  truncate(数值,小数点后保留的长度)  不四舍五入
select TRUNCATE(3.11,1);--3.1
select truncate(3.19,1);--3.1

3,取整函数 往上取整,天花板 ceil(浮点数值)


--天花板函数 ceil(数值)  小数点后面都不要 保留整数 向上取整
select ceil(3.11)  ;--3

4,取整函数 往下取整,地板 floor(浮点数值)

--地板函数 floor(数值)  向下取整 小数点后面都不要 保留整数
select floor(3.99);--3

5,指数运算函数 pow(x,x的N次方)

--指数函数 幂运算  pow(x,x的N次方)
select pow(2,3);--8
select pow(7,3); --343
select pow(7,2); --14

6,余数运算函数 mod(数值,取余数)

--余数函数 mod(被除数数值,除数);
select mod(5001,5000); --1
select mod(3,2);--1
select mod(4,2);--0

三,时间函数

--1,返回当前时间和日期 now   可以用作插入数据的时候
select now();
--2,返回当前日期
select curdate();
--3,返回当前时间
select curtime();
--4,返回一年的第几周  weekofyear(参数是包含时间的字符串)
select weekofyear('2026-05-02');
select weekofyear(now());
select weekofyear(curdate());
--5,返回一年中的季度 quarter(参数是包含时间的字符串)
select quarter(now());
--6,字符串转事件类型  str_to_date(字符串,时间格式);
select str_to_date('20200506','%Y%m%d');  --字符串和转换时间的格式必须要对应
select str_to_date('2024-05-06','%Y-%m-%d');
--7,格式化时间字符串 date_format(时间字符串,想要的时间格式);
select date_format('2025/05/05','%Y年');-- 2025年
select date_format(now(),'%m月');-- 06月
select date_format(now(),'%d日');-- 21日
select date_format(now(),'%H小时');-- 15小时
select date_format(now(),'%i分钟');-- 50分钟
select date_format(now(),'%s秒');-- 49秒
/*
%Y - 四位数的年份(例如 2023)
%m - 月份(01 到 12)
%d - 日(01 到 31)
%H - 小时(00 到 23,24小时制)
%h 或 %I - 小时(01 到 12,12小时制)
%i - 分钟(00 到 59)
%s - 秒(00 到 59)
*/
select DATE_FORMAT(now(),'%Y这是年*%m这是月*%d这是天,%h这是小时*%i这是分钟*%s这是秒');
--24这是年 * June这是月 * 21这是天, 03这是小时 * 53这是分钟 * 31这是秒

--8,date_add 时间增加函数 date_add(参数1带时间的字符串,interval 1 [Year | Month |Day |Hour| Minute| Second]);
select DATE_ADD(now(),INTERVAL -1 day);
select DATE_ADD(now(),INTERVAL 1 day);

--9,计算本月的最后一天 last_add(参数是带月份的字符串)
select last_day(now());
select last_day('2025-05-06');

--10 计算 时间差函数  datediff(结束时间字符串,开始时间字符串)
select datediff(now(),'1991-09-07');--11976

--11 计算时间差 可以细化为 年月日时分秒函数  
--timestampdiff([Year | Month |Day |Hour| Minute| Second],开始时间,结束时间)
select TIMESTAMPDIFF(YEAR,'1991/09/17',NOW());

-- 12 把时间日期转成时间戳 unix_timestamp(date)
select unix_timestamp(now());
select unix_timestamp('2022-06-07');

--13 把时间戳转成 日期 
select from_unixtime(0); --1970-01-01 08:00:00  时区
select FROM_UNIXTIME(1721256456);

四,判断函数

-- ①if(expr,v1,v2)函数   : 判断数据给出返回值

select if(1>0,'为true则返回我','为false则返回我');
select if(1<0,'为true则返回我','为false则返回我');

-- ②ifnull()函数         : 判断空给出返回值  
--ifnull(字符串,如果是null则返回这个值)
--ifnull(字符串,如果不是null返回原来的值)
select ifnull(null,'我是填充的值');
select ifnull(1,'我是填充的值');

--nullif(expr1,expr2) : 相同返回null 不同保留表达式1的原值.
select nullif(1,1);  --如果值相等则返回null
select nullif(1,0); -- 如果值不相等 则返回第一个值

五,分支流程


-- ③case…when函数用法     : 多条件判断给出返回值.

--需求1 查询 student表里面  语文分数 小于60给不及格  大于60小于80 给良好 大于80给优秀
select name,chinese,
    case 
        when chinese<60 and chinese>0 then '不及格'
        when chinese>=60 and chinese<=80 then '良好'
        when chinese>=80 and chinese<100 then '良好'
        else '满分选手'
        end as '段位'
 from student;

 --需求2 查询 student表里面  语文分数 小于60给不及格  大于60小于80 给良好 大于80给优秀
 select name,s_id,
    case s_id
        when 'A001' then 'b001'
        when 'A002' then 'b002'
        when 'A003' then 'b003'
        when 'A004' then 'b004'
        else '待定'
        END as '级别'
  from student;

  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值