• MySQL的常用函数


    一、字符串函数

    函数描述
    CONCAT(s1,s2,…,sn)连接s1,s2,…,sn为一个字符串
    CONCAT_WS(separator,s1,s2,…,sn)连接s1一直到sn,并且中间以separator作为分隔符
    CHAR_LENGTH(s)返回字符串s的字符数
    LENGTH(s)返回字符串s的字节数,和字符集有关
    INSERT(str,index,len,instr)将字符串str从第index位置开始,len个字符长的子串替换为字符串instr
    UPPER(s)或UCASE(s)将字符串s的所有字母转换成大写字母
    LOWER(s)或LCASE(s)将字符串s的所有字母转换成小写字母
    LEFT(s,n)返回字符串s最左边的n个字符
    RIGHT(s,n)返回字符串s最右边的n个字符
    LPAD(str,len,pad)用字符串pad对str最左边进行填充,直到str的长度为len个字符
    RPAD(str,len,pad)用字符串pad对str最右边进行填充,直到str的长度为len个字符
    LTRIM(s)去掉字符串s左侧的空格
    RTRIM(s)去掉字符串s右侧的空格
    TRIM(s)去掉字符串s开始与结尾的空格
    TRIM([BOTH] s1 FROM s)去掉字符串s开始与结尾的s1
    TRIM([LEADING] s1 FROM s)去掉字符串s开始处的s1
    TRIM([TRAILING] s1 FROM s)去掉字符串s结尾处的s1
    REPEAT(str,n)返回str重复n次的结果
    REPLACE(str,a,b)用字符串b替换字符串str中所有出现的字符串a
    STRCMP(s1,s2)比较字符串s1,s2
    SUBSTRING(s,index,len)返回从字符串s的index位置的len个字符
    -- 用户表
    CREATE TABLE t_user (
      id INT(11) NOT NULL AUTO_INCREMENT,
      uname VARCHAR(40) DEFAULT NULL,
      age INT(11) DEFAULT NULL,
      sex INT(11) DEFAULT NULL,
      PRIMARY KEY (id)
    );
    
    INSERT  INTO t_user VALUES (NULL,'zs',18,1);
    INSERT  INTO t_user VALUES (NULL,'ls',20,0);
    INSERT  INTO t_user VALUES (NULL,'ww',23,1);
    INSERT  INTO t_user VALUES (NULL,'zl',24,1);
    INSERT  INTO t_user VALUES (NULL,'lq',15,0);
    INSERT  INTO t_user VALUES (NULL,'hh',12,0);
    INSERT  INTO t_user VALUES (NULL,'wzx',60,NULL);
    INSERT  INTO t_user VALUES (NULL,'lb',NULL,NULL);
    
    -- 1. 使用concat函数显示出  你好,uname 的结果
    SELECT CONCAT("你好,",uname) FROM t_user
    
    -- 2. 使用concat_ws函数显示出 你好,uname ,很高兴认识你的结果
    SELECT CONCAT_WS(",","你好",uname,"很高兴认识你") FROM t_user
    
    -- 3. 将字符串hello 转换为大写显示
    SELECT UPPER("hello")
    
    -- 4. 查询所有用户名,将用户名显示为大写
    SELECT UPPER(uname) FROM t_user
    
    -- 5. 查询所有用户名,去掉左右两端的空格
    SELECT TRIM(uname) FROM t_user
    
    -- 6. 获取 hello,world 从第二个字符开始的完整子串
    SELECT SUBSTRING("hello,world",2)
    
    -- 7. 获取hello,world 从第二个字符开始但是长度为4的子串
    SELECT SUBSTRING("hello,world",2,4)
    
    • 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

    二、数值函数

    函数用法
    ABS(x)返回x的绝对值
    CEIL(x)返回大于x的最小整数值
    FLOOR(x)返回小于x的最大整数值
    MOD(x,y)返回x/y的模
    RAND()返回0~1的随机值
    ROUND(x,y)返回参数x的四舍五入的有y位的小数的值
    TRUNCATE(x,y)返回数字x截断为y位小数的结果
    SQRT(x)返回x的平方根
    POW(x,y)返回x的y次方
    -- 数值函数
    -- 1. 获取-12的绝对值
    SELECT ABS(-12)
    
    -- 2. 将-11.2向上取整
    SELECT CEIL(-11.2)
    
    -- 3. 将1.6向下取整
    SELECT FLOOR(1.6)
    
    -- 4. 获得2的32次幂的值
    SELECT POW(2,32)
    
    -- 5. 获得一个在0~100之间的随机数
    SELECT RAND()*100
    
    -- 获取1~100的随机整数
    SELECT CEIL(RAND()*100)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    三、日期函数

    函数用法
    CURDATE()或CURRENT_DATE()返回当前日期
    CURTIME()或CURRENT_TIME()返回当前时间
    NOW()/SYSDATE()/CURRENT_TIMESTAMP()/LOCALTIME()/LOCALTIMESTAMO()返回当前系统日期时间
    YEAR(date)/MONTH(date)/DAY(date)/HOUR(time)/MINUTE(time)/SECOND(time)返回具体的时间值
    WEEK(date)/WEEKOFYEAR(date)返回一年中的第几周
    DAYOFWEEK()返回今天是一周的第几天,注意:周日是1,周一是2,…周六是7
    WEEKDAY(date)返回周几,注意,周一是0,周二是1,…周日是6
    DAYNAME(date)返回星期:MONDAY,TUESDAY,…SUNDAY
    MONTHNAME(date)返回月份:January,…
    DATEDIFF (date1,date2)/TIMEDIFF(time1,time2)返回date1-date2的日期间隔、返回time1-time2的时间间隔
    DATE_ADD(datetime,INTERVAL exprtype)返回与给定日期时间相差INTERVAL时间段的日期时间
    DATE_FORMAT(datetime.fmt)按照字符串fmt格式化日期datetime值
    STR_TO_DATE(str,fmt)按照字符串fmt对str进行解析,解析为一个日期
    格式符说明
    %Y4位数字表示年份
    %y表示两位数字表示年份
    %M月名表示月份(January,…)
    %m两位数字表示月份(01,02,03…)
    %b缩写的月名(Jan,Feb,…)
    %c数字表示月份(1,2,3…)
    %D英文后缀表示月中的天数(1st,2nd,3rd…)
    %d两位数字表示月中的天数(01,02…)
    %e数字形式表示月中的天数(1,2,3,4,5…)
    %H两位数字表示小数,24小时制(01,02…)
    %h和%I两位数字表示小时,12小时制(01,02…)
    %k数字形式的小时,24小时制(1,2,3…)
    %I数字形式表示小时,12小时制(1,2,3,4…)
    %i两位数字表示分钟(00,01,02)
    %S和%s两位数字表示秒(00,01,02…)
    %W一周中的星期名称(Sunday…)
    %a一周中的星期缩写(Sun,Mon,Tues,…)
    %w以数字表示周中的天数(0=Sunday,1=Monday…)
    %j以3位数字表示年中的天数(001,002…)
    %U以数字表示年中的第几周(1,2,3…),其中Sunday为周中第一天
    %u以数字表示年中的第几周(1,2,3…)其中Monday为周中第一天
    %T24小时制
    %r12小时制
    %pAM或PM
    %%表示%
    -- 日期函数
    -- 1. 将当前时间转成字符串
    SELECT DATE_FORMAT(LOCALTIME(),"%Y-%m-%d %H:%i:%S")
    
    -- 2. 获取当前日期
    SELECT CURDATE()
    
    -- 3. 获取当前时间
    SELECT CURTIME()
    
    -- 4. 获取当前的日期时间
    SELECT NOW()
    
    -- 5. 获取到元旦还有多少天
    SELECT DATEDIFF("2023-01-01",NOW())
    
    -- 6. 一年后的现在的日期时间
    SELECT DATE_ADD(NOW(),INTERVAL 1 YEAR)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    四、流程函数

    函数用法
    IF(value,t,f)如果value是真,返回t,否则返回f
    IFNULL(value1,value2)如果value1不为空,返回value1,否则返回value2
    CASE WHEN 条件1 THEN result1 WHEN 条件2 THEN result2…[ELSE result] END相当于Java中的if…else if …else…
    CASE expr WHEN 常量值1 THEN 值1 WHEN 常量值2 THEN 值2 … [ELSE 值n ] END相当于Java中的switch … case …
    -- 流程函数
    -- 1. 获取用户的姓名、性别,如果性别为1则显示1,否则显示0;要求使用if函数查询
    SELECT uname,IF(sex=1,1,0) FROM t_user
    
    -- 2. 获取用户的姓名、性别,如果性别为null则显示为1:要求使用ifnull函数查询
    SELECT uname,IFNULL(sex,1) FROM t_user
    
    -- 3. 查询用户的年龄,如果年龄<=12岁就是儿童,<=18岁就是少年,<=40岁就是中年,其他就是老年
    -- 使用case when进行查询到的内容是单独作为一个字段存在的,所以跟其他字段要用逗号,分割
    SELECT uname,age,CASE WHEN IFNULL(age,0)<=12 THEN '儿童'
    		      WHEN age<=18 THEN '少年'
    		      WHEN age<=40 THEN '中年'
    		      ELSE '老年' END "描述"
    FROM t_user
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    五、其他函数

    函数用法
    database()返回当前数据库名
    version()返回当前数据库版本
    user()返回当前登录用户名
    password(str)返回字符串str的加密版本,41位长的字符串
    md5(str)返回字符串str的md5值,也是一种加密方式

    学海无涯苦作舟

    这里写图片描述

  • 相关阅读:
    枚举类、泛型、API
    8.2 Jmeter if控制器使用
    杭电多校七 1003-Counting Stickmen(组合数学)
    Swift 请求用户授权以跟踪其跨应用或网站的活动
    天宇优配|钠电池汽车要来了,续航达500公里!持续高成长股揭秘
    关于tcp发送成功但对端无法接收情况的思考
    MySQL-InnoDB索引详解
    python使用ADB工具连接手机进行操作
    salesforce零基础学习(一百二十)快去迁移你的代码中的 Alert / Confirm 以及 Prompt吧
    [附源码]java毕业设计-室内田径馆预约管理系统
  • 原文地址:https://blog.csdn.net/HunterArley/article/details/127692519