【MySQL的内置函数】

【MySQL的内置函数】

码农世界 2024-05-18 前端 62 次浏览 0个评论

文章目录

  • 一、日期函数
    • 1.current_date()
    • 2.current_time()
    • 3.current_timestamp
    • 4. date_add 穿越未来
    • 5.date_sub 回到过去
    • 6.datediff
    • 案例
    • 二、字符串函数
      • 2.1charset
      • 2.2 concat ——拼接字符串
      • 2.3 ucase——转化成大写
      • 2.4 lcase——转化成小写
      • 2.5 left()
      • 2.6replace()
      • 2.7substring()
      • 2.8 ltrim 和rtrim
      • 使用案例
      • 三、数学函数
      • 四、其他函数
        • user()
        • md5()
        • ifnull(val1,val2)

          一、日期函数

          1.current_date()

          这是一个日期函数,表示当前的日期。

          2.current_time()

          这是一个时间函数,表示当前时间。

          注意区分两个概念:日期和时间。

          一般情况下:日期指的是,年月日。

          时间指的是,时分秒。

          3.current_timestamp

          时间戳。

          获取日期和时间,也就是详细到年月日,时分秒。

          4. date_add 穿越未来

          在日期的基础上,加上一个日期。

          interval:时间间隔。

          mysql> select date_add(‘2024-5-11’,interval 100 day);

          还可以获取当前时间,然后添加上year/month/day/hour/minute/second

          5.date_sub 回到过去

          在日期的基础上,减去一个日期。

          interval:时间间隔。

          mysql> select date_sub(‘2024-5-11’,interval 100 day);

          还可以获取当前时间,然后添加上year/month/day/hour/minute/second。

          6.datediff

          计算两个日期之间相差多少天。

          案例

          创建一张表,记录生日

          mysql> create table tmp(

          -> id bigint primary key auto_increment,

          -> birthday date

          -> );

          向表中插入一些数据:

          mysql> insert into tmp(birthday) values(current_date());

          mysql> insert into tmp(birthday) values(‘1949-10-01’);

          mysql> insert into tmp(birthday) values(‘2049-10-01’);

          mysql> insert into tmp(birthday) values(current_time());

          mysql> insert into tmp(birthday) values(date(current_time()));

          可以看到,就算插入的是当前时间,显示时仍然是以日期的方式显示的。

          此时可以认为:

          • 1.所有的函数,底层都是用同一个日期函数。
          • 2.MySQL有一点小bug,时间能插入日期类型的数据中。

            案例2:

            创建一个留言表

            mysql> create table msg(

            id int primary key auto_increment,

            content varchar(100) not null, senddtime datetime

            );

            插入数据:

            现在有一个要求,请查询20分钟内发布过的消息。

            mysql> select id,content,sendtime from msg where sendtime > date_sub(now(),interval 30 minute);

            另一种查询方法也可以:

            mysql> select id,content,sendtime from msg where now() < date_add(sendtime,interval 30 minute);

            二、字符串函数

            2.1charset

            获取msp表的content列的字符集.

            mysql> select charset(content) from msg;

            2.2 concat ——拼接字符串

            这个函数就像c语言学过的strcat函数,将字符串拼接。

            2.3 ucase——转化成大写

            mysql> select ucase(‘hello,你好,worldasddd’);

            2.4 lcase——转化成小写

            mysql> select lcase(‘hello,你好,BBBBBBBBBBd’);

            2.5 left()

            left(string, length);

            从string左边开始提取length个字符。

            2.6replace()

            replace(string,src,dst);

            在string字符串中,查找src字符串,找到并替换成dst字符串。

            2.7substring()

            substring(str,position,length);

            从str的position位置开始,取length个字符。

            2.8 ltrim 和rtrim

            ltrim去除字符串左边的空格

            rtrim去除右边的空格。

            trim去除左右两边的空格。

            但是不去除中间的空格。

            使用案例

            要求显示exam_result表中的信息,显示格式:“XXX的语文是XXX分,数学XXX分,英语XXX分”

            mysql> select concat(‘考生姓名:’, name, ‘恭喜你,你的总分是:’,chinese+math+english,’ 语文成绩:‘,chinese, ’ 数学成绩:’ ,math,’ 英语成绩: ',english) as 分数 from exam_result;

            求学生表中学生姓名占用的字节数.

            mysql> select name,length(name) from exam_result;

            原因是,使用的字符编码默认是utf8的。

            一个汉字占3个字节。

            注意:字符和数字占1字节。

            mysql> select length(‘abc123’);

            将EMP表中所有名字中有S的替换成’上海’

            mysql> select ename,replace(ename,‘S’,‘上海’) from emp;

            截取EMP表中ename字段的第二个到第三个字符。

            mysql> select substring(ename,2,2) from emp;

            以首字母小写的方式显示所有员工的姓名

            mysql> select ename, concat( substring(lcase(ename),1,1), substring(ename,2)) from emp ;

            注意:上面的案例,都没有修改表格本身,而是将满足条件的表内容提取出来并修改,再聚合展现出来。

            对表格本身的内容没有修改。

            想要修改表格本身的内容,一般用update才会修改。

            三、数学函数

            三个取整方式:

            向上取整,向下取整,0向取整。

            ceiling函数:向上取整。ceiling翻译:天花板。

            floor函数:向下取整。floor翻译:地板。

            四、其他函数

            user()

            当前用户。

            md5()

            语法:md5(str)对一个字符串进行md5摘要,摘要后得到一个32位字符串。

            形成一个摘要,产生等长字符串。

            不管这个参数str有多短多长,都会形成一个固定的摘要。

            ifnull(val1,val2)

            判断第一个val1是不是null,如果第一个是null,返回val2。

            如果第一个不是null,返回val1。

转载请注明来自码农世界,本文标题:《【MySQL的内置函数】》

百度分享代码,如果开启HTTPS请参考李洋个人博客
每一天,每一秒,你所做的决定都会改变你的人生!

发表评论

快捷回复:

评论列表 (暂无评论,62人围观)参与讨论

还没有评论,来说两句吧...

Top