道不同
道不同 路渐行渐远
但愿我们再见面时 都能够笑着讲一讲 各自的来时路
不必在意别人的看法,如果你想做 那你就去做
随笔启示
本文 记载 当前阶段对MySql常用的函数->案例->作用
-- 关于字符串函数
-- 在现阶段常常遇见取数据时不要某某前缀,Trim可以去掉字符串中开头或结尾的某个字符串 但是必须将字符放在目标之间(如果什么都不写就是去除前后空格)
-- *********
-- Trim函数介绍
-- 结果:颜家伟,leading在..之前 用来去除前缀我觉得在合适不过了
select trim(leading 'fid·' from 'fid·颜家伟');
-- 结果:fid·,trailing在最后 用来去除后缀
select trim(trailing '颜家伟' from 'fid·颜家伟');
-- 结果:颜家伟,both(头部/尾部满足去除条件则去除)
select trim(both 'fid·' from 'fid·颜家伟fid·');
-- 结果:fid·颜家伟 (无空格)
select trim(' fid·颜家伟 ') as code;
-- *********
-- left函数介绍
-- left(str,length) length>=0 从左边开始截取第n个【结果:颜】
select left('颜家伟',1);
-- *********
-- right函数介绍
-- right(str,length) length>=0 从右边开始截取第n个【结果:家伟】
select right('颜家伟',2);
-- *********
-- substring函数介绍
-- substring(str,index,len) 截取str,从index开始,截取len长度
select substring('颜家伟',2,2) ;
-- *********
-- substring_index函数介绍substring_index(str,delim,count),str是要截取的字符串,delim是截取的字段count是从哪里开始截取(为0则是左边第0个开始,1位左边开始第一个选取左边的,-1从右边第一个开始选取右边的
-- 结果:【www】
select substring_index('www.mysql.com','.',1);
-- 结果:【com】
select substring_index('www.mysql.com','.',-1);
-- 真实场景 89.63亿元截止至2023-04-24 需求中需要89.63亿元,如果我们截取substring(aaa,1,7)的话肯定不行的,因为场景中的数字可能超过7为位 或者不足7位,就会出现本需要过滤的信息
select substring('89.63亿元截止至2023-04-24',1,7);
-- 少截取了`**亿元`
select substring('89999.63亿元截止至2023-04-24',1,7);
-- 多截取了`截`
select substring('1.63亿元截止至2023-04-24',1,7);
-- 【解决方案】
select substring_index('89999.63亿元截止至2023-04-24','截止至',1);
-- 关于时间函数***************************
-- date_format(date,'格式')大写Y:'%Y'显示4位,小写y:'%y'显示后两位
-- 结果:【20-05-20 17:20:20】
select date_format('2020-05-20 17:20:20','%y-%m-%d %T');
-- 结果:【2020-05-20 17:20:20】
select date_format('2020-05-20 17:20:20','%Y-%m-%d %T');
-- 结果:【20200520】
select date_format('2020-05-20 17:20:20','%Y%m%d');
-- 结果:【2020年05月20】
select date_format('2020-05-20 17:20:20','%Y年%m月%d') as create_time;
-- *****
-- subdate(date,day)截取时间,时间减去后面的day
-- 结果【2020-05-(20-1)】=2020-05-19,【2020-05-(20-0)】=2020-05-20,【2020-05-(20- -1)】=2020-05-21
select subdate('2020-05-20',1),subdate('2020-05-20',0),subdate('2020-05-20',-1);
-- subtime(expr1,expr2)–是两个时间相减
-- 结果:【10:00:00】需要注意,比较的是时间(时分秒)而不是日期(年月日)
select subtime('17:21:21','7:21:21')
--
--
--
--
--
--
--
-- 字符串 数值比较
SELECT CAST('123' AS SIGNED)>127; -- 结果为0,表示false
SELECT CAST('123' AS SIGNED)>12; -- 结果为1,表示true
SELECT CONVERT('999亿元',SIGNED)>127; -- 结果为0,表示false
SELECT CONVERT('123',SIGNED)>12; -- 结果为1,表示true
-- 字符串 数值排序【UNSIGNED无符号字符型】【asc升序】
SELECT `字段` FROM `表名` ORDER BY CAST(`字段` AS UNSIGNED) ASC;