函数:是指一段可以直接被另一段程序调用的程序或代码。
MySQL内置函数:
字符串函数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | -- -----------------------------mysql 内置函数--字符串函数----------------------------- -- 字符串拼接 -- CONCAT(str1,str2,...) select CONCAT( 'I' , ' love' , ' you' ); -- return I love you -- 字符串转小写 -- LOWER(str) select LOWER ( 'I LOVE YOU' ); -- return i love you -- 字符串转大写 -- UPPER(str) select UPPER ( 'I LOVE YOU' ); -- return i love you -- 左填充,用字符串padstr对str的左边进行填充,达到n个字符串长度 -- LPAD(str,len,padstr) select LPAD( '1' ,4,0); -- return 0001 -- 右填充,用字符串padstr对str的右边进行填充,达到n个字符串长度 select RPAD( '1' ,4,0) -- RETURN 1000 -- 去掉字符串开始和结尾的空格 -- select TRIM([remstr FROM] str) select trim( ' I love you ' ) -- I love you -- 返回从字符串str从start位置开始起的len个长度的字符串 -- select SUBSTRING(str,pos,len) select SUBSTR( 'hello world' ,1,5) -- return hello 索引从 1 开始 |
数值函数:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | -- -----------------------------mysql 内置函数--数值函数----------------------------- -- 向上取整 SELECT CEIL(1.1) as count ; -- RETURN 2 -- 向下取整 select FLOOR(1.8) count ; -- return 1 -- 返回X/Y的摸 select MOD(10,2),MOD(3,3),MOD(3,2),MOD(3,6),MOD(3,9),MOD(5,9) -- RAND() 返回0-1内的随机数 SELECT RAND() 随机数; -- 求参数X 的四舍五入的值,保利y为小数 -- select ROUND(X) -- SELECT ROUND(X,D) select ROUND(1.44) return1,ROUND(1.51) return2,ROUND(1.444,2)return1点44 -- 案例,通过数据库函数,生成一个6位数的随机验证码 select RAND()*1000000 as 随机六位整数和小数 -- 保四舍五入,留一位小数 select ROUND(RAND()*1000000,0)六位验证码,ROUND(RAND()*100000000,0)八位验证码; -- 补位法 select LPAD(ROUND(RAND()*100000,0),6, '9' ) -- 长度不够,用9补 select RPAD(ROUND(RAND()*100000,0),6, '9' ) -- 长度不够,用9补 select LPAD(ROUND(RAND()*100000,0),8, '9' ); -- 长度不够,用9补 select RPAD(ROUND(RAND()*100000,0),8, '9' ); -- 长度不够,用9补 |
日期函数:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | -- -----------------------------mysql 内置函数--日期函数----------------------------- -- 返回当前日期 select CURDATE(), CURRENT_DATE (); -- 返回当前时间 select CURTIME(); -- 字符串拼接 select CONCAT(CURDATE(), ' ' ,CURTIME()) -- 返回当前日期+时间 select NOW(); -- 格式化周几 SELECT DATE_FORMAT(NOW(), '%W' ); -- Friday SELECT DATE_FORMAT( '2021-11-11' , '%W' ); -- 日期格式化 | 将时间格式化为 YYYY-mm-dd HH:ii:ss 格式 SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s %W' ); -- 2023/07/07 13:40:19 Friday -- 将时间格式化为 YYYY/mm/dd HH:ii:ss SELECT DATE_FORMAT(NOW(), '%Y/%m/%d %H:%i:%s %W' ); -- 2023/07/07 13:40:19 Friday select YEAR (NOW()) 年; select MONTH (NOW())月; select DAY (NOW()) 日; -- 注:星期天为第一天 select DAYNAME(NOW()) 星期几,DAYOFMONTH(NOW())月份,DAYOFWEEK(NOW())周第几天,DAYOFYEAR(NOW())一年的第多少天; SELECT DAYNAME( '2021-11-11' ); SELECT WEEKDAY( '2021-11-11' ); -- DATE_ADD(date,INTERVAL expr unit) -- DATE_SUB(date,INTERVAL expr unit) -- DATE_ADD() 函数向日期添加指定的时间间隔。 -- date 参数是合法的日期表达式。expr 参数是您希望添加的时间间隔。 -- https://www.runoob.com/sql/func-date-add.html select date_add( '2013-01-18' , interval '1,2' YEAR_MONTH); -- 新增1年 2个月 ,return 2014-03-08 select date_add( '2013-01-18' , interval 1 YEAR_MONTH); -- 新增一个月,return 2013-02-18 select date_add( '2013-02-18' , interval -1 YEAR_MONTH); -- 减一个月,return 2013-01-18 -- DATEDIFF(expr1,expr2) -- 返回开始时间和借宿时间之间的天数 select DATEDIFF( '2023-07-03' , '2023-07-07' ) -- return -4 select DATEDIFF( '2023-07-07' , '2017-05-11' ) 入职天数 -- 获取当时时间戳10位长度 select UNIX_TIMESTAMP(now()),UNIX_TIMESTAMP() -- 将时间戳格式化为 YYYY-mm-dd HH:ii:ss 格式日期 ---默认 SELECT FROM_UNIXTIME(UNIX_TIMESTAMP()) -- 将时间戳格式化日期(指定日期格式化格式) SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(), '%Y-%m-%d %H:%i:%s' ) -- 处理13位的时间戳转换,需要手动除以 1000 SELECT FROM_UNIXTIME(1627311955999/1000, '%Y-%m-%d %H:%i:%s' ) |
流程函数:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | -- -----------------------------mysql 内置函数--流程控制函数----------------------------- -- 条件为ture,则返回第一个参数,否则返回第二个参数 select if(1>2, 'ok' , 'error' ) result; -- return error -- 第一个参数如果为 null 则范围第二个参数,否则返回第一个参数 select ifnull( '' , 'default' ) empty; -- 空字符串 select ifnull( null , 'default' ) result; -- retrun default select ifnull( 'ok' , 'default' ) result; -- return ok -- case when else end /* ( case 字段 when xxx then xxx when xxx then xxx else xxx end )as 重命名字段 */ select t.*, ( case content when '001' then '一级戒备' when '002' then '二级戒备' else '三级戒备' end )戒备戒备 from remarkinfo t ORDER BY t.content; |
博客内容主要用于日常学习记录,内容比较随意,如有问题,还需谅解!!!
分类:
004 DB / MYSQL
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本