Mysql入门---sql结构化查询语言中常用函数总结

Mysql数据库入门—sql函数

Author:qyan.li

Date:2022.2.21


一、 前言

sql作为数据库操作中的主流语言之一,同其他编程语言一致,内部同样包含多种内置函数,方便用户使用其进行更高效的查询。

二、 sql函数

sql语言中函数主要包含四种,分别为字符函数、数学函数、日期函数、流程控制函数等,下面将针对其一一进行介绍。

1. 字符函数
  1. 获取字符串长度函数length()函数

    # 按照Localname的字符个数进行降序排列
    select name,Localname,length(Localname) from world.country order by length(Localname) desc;
    
  2. 连接字符串函数concat()函数

    concat()函数中包含三个变量,分别为三个拼接的目标对象

    # 按照指定方式拼接字符串(xx was founed in xxxx)并显示
    select name,code,concat(name,' was founded in ',IndepYear) from world.country where IndepYear is not null;
    
  3. 字符串截取函数subtsr()

    sql语言中字符串下标从1开始,substr()函数包含三个变量**(目标字符串,起始索引,截取长度)**

    # 在特定语句中截取出特定的单词(从索引8开始截取5个字母)
    select substr('I love UESTC',8,5)
    • 小Tips:

      sql结构化查询语言中,字符串下标从1开始

  4. 获取字母索引instr(),返回特定字符串中特定字母第一次出现时的索引

    # 获取国家名称中第一次出现字母a的索引位置
    select name,instr(name,'a') from world.country;
    
  5. 去除字符串前后指定字符trim()

    select trim(' UESTC '); # 去除字符串前后的空格
    select trim('_' from '_UESTC_'); # 去除前后指定字符'_'
    select trim('_' from '__UESTC__'); # 递归去除
    
    • 小Tips:

      1. 去除字符可以指定,默认去除空格
      2. 递归去除,无论有多少,均可以去除
  6. 字符串填充函数lpad和rpad函数

    select lpad('UESTC',10,'-');
    select rpad('UESTC',10,'_');
    select lpad(rpad('UESTC',7,'_'),9,'_');
    
    • 小Tips:

      pad()中包含三个参数,分别为待填充字符串,填充后总长度,填充变量

  7. 大小写变换函数lower()变换小写,upper()变换大写

    select name,lower(name),upper(name) from world.country 
    
2. 数学函数

sql语言中的数学函数与其他编程语言中类似,此处仅列明若干常用的数学函数,以供参考。

  1. 绝对值函数abs()

    select abs(3.14);
    select abs(-3.14);
    # 按照GNP变化的绝对值进行降序排列
    select name,GNP,GNPold,abs(GNP-GNPold) GNP变化 from world.country where GNPold is not null order by GNP变化 desc;
    
  2. 近似函数

    近似函数主要包含三种,分别代表三种常见的近似规则:向上取整,向下取整,四舍五入

    # ceil向上取整
    select ceil(-1.01),ceil(0.09),ceil(1.00);
    # floor向下取整
    select floor(-1.01),floor(0.09),floor(1.00);
    # round四舍五入
    select round(3.1415926),round(3.1415926,3),round(3.1415926,5);
    
  3. 截断函数truncate()

    截断函数的主要作用在于将小数按照指定的位数进行截断,其间并不包含任何近似的操作。

    select truncate(3.1415926,3);
    
  4. 取余函数mod()

    取余函数mod()结果的符号与被除数的符号相同

    select -10%3,10%3,-10%-3,10%-3;
    
3. 日期函数

日期函数的相关使用与sql语言中日期的数据类型密切相关,衍生诸多相关的日期函数

  1. 显示时间、当前日期now() curdate()

    select now(); # 显示当前详细时间
    select curdate(); # 显示当前日期 
    
  2. 显示两个日期之间的差值datediff()

    select datediff('2019-1-1','1956-9-8');
    
  3. 日期字段格式化函数date_format()

    date_format()日期字段函数可以将日期字段按照自己的意愿显示为特定的格式

    select address,last_update,date_format(last_update,'%Y年%m月%d日 %H:%i:%s') 租赁时间 from sakila.address;
    

    小Tips:

    严格按照上述字母进行日期格式的转换,时(H与h的区别在于24计时制和12计时制的区别)

  4. 字符串解析日期字段函数str_to_date()

    str_to_date()函数可以将字符串转化为日期形式的字段,便于后续比较和应用

    select * from sakila.address where last_update > str_to_date('2014年09月25日 22:34:10','%Y年%m月%d日 %H:%i:%s');
    
4. 流程控制函数
  1. ifnull()当给定字段内容为空时,显示指定的默认值,常见使用格式ifnull(str1,str2)表示为当str1为空时,显示str2

    select name,ifnull(IndepYear,'无独立年份') from world.country;
    select name,concat(name,'was independent in',ifnull(IndepYear,'---')) from world.country;
    select name,ifnull(concat('建国时间为',IndepYear,'年'),'没有建国时间') from world.country;
    
  2. if(<判断式>,结果1,结果2),类似其他编程语言中的三目运算符,满足条件显示结果1,不满足条件显示结果2

    select if(10>5,'Yes','No') as result;
    select if(IndepYear is null,'没有建国年份',concat(name,' was independent in ',IndepYear)) from world.country;
    
  3. case..hen..then..end条件分支语句

    SELECT 
        name,
        continent,
        CASE continent
            WHEN 'Asia' THEN '亚洲'
            WHEN 'North America' THEN '北美洲'
            WHEN 'Africa' THEN '非洲'
            WHEN 'Oceania' THEN '大洋洲'
            WHEN 'South America' THEN '南美洲'
            WHEN 'Antarctica' THEN '南极洲'
            ELSE '暂不做翻译'
        END AS '中文名称'
    FROM
        world.country;
    # 借助于ctrl+b将代码进行格式化后的结果
    
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值