函数:是指一段可以直接被另一段程序调用的程序或代码。
MySQL内置函数:
字符串函数
-- -----------------------------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 开始
数值函数:
-- -----------------------------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补
日期函数:
-- -----------------------------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')
流程函数:
-- -----------------------------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;
博客内容主要用于日常学习记录,内容比较随意,如有问题,还需谅解!!!