欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

MySQL基础学习笔记之——常用函数

程序员文章站 2022-05-30 12:12:32
...

常用函数

1、字符串函数

函数 说明
CONCAT(S1,S2,…,Sn) 连接参数字符串为一个字符串
INSERT(str,x,y,instr) 将字符串 str 从第 x 位置开始,y 个字符长的子串替换为 instr
LOWER(str) 小写
UPPER(str) 大写
LEFT(str,x) 返回字符串最左边的 x 个字符
RIGHT(str,x) 返回字符串最右边的 x 个字符
LPAD(str,n,pad) 用字符串 pad 对 str 最左边进行填充,直到长度为 n 个字符长度
RPAD(str,n,pad) 用字符串 pad 对 str 最右边进行填充,直到长度为 n 个字符长度
LTRIM(str) 去掉字符串 str 左侧的空格
RTRIM(str) 去掉字符串 str 右侧的空格
REPEAT(str,x) 返回 str 重复 x 次的结果
REPLACE(str,a,b) 用字符串 b 替换字符串 str 中所有出现的字符串 a
STRCMP(s1,s2) 比较字符串
TRIM(str) 去掉字符串行尾和行头的空格
SUBSTRING(str,x,y) 返回从字符串 str x 位置起 y 个字符长度的子串

2、数值函数

函数 说明
ABS(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 位小数的结果(不四舍五入)
mysql> select round(1.1),round(1.1,2),round(1,2),round(1.1,3);
+------------+--------------+------------+--------------+
| round(1.1) | round(1.1,2) | round(1,2) | round(1.1,3) |
+------------+--------------+------------+--------------+
|          1 |         1.10 |          1 |        1.100 |
+------------+--------------+------------+--------------+
1 row in set (0.00 sec)

mysql> select round(1.235,2),truncate(1.235,2);
+----------------+-------------------+
| round(1.235,2) | truncate(1.235,2) |
+----------------+-------------------+
|           1.24 |              1.23 |
+----------------+-------------------+
1 row in set (0.00 sec)

3、日期和时间函数

函数 说明
CURDATE() 返回当前日期
CURTIME() 返回当前时间
NOW() 返回当前的日期和时间
UNIX_TIMESTAMP(date) 返回日期 date 的 UNIX 时间戳
FROM_UNIXTIME 返回 UNIX 时间戳的日期值
WEEK(date) 返回日期 date 为一年中的第几周
YEAR(date) 返回日期 date 的年份
HOUR(date) 返回 time 的小时值
MINUTE(date) 返回 time 的分钟值
MONTHNAME(date) 返回 date 的月份名
DATE_FORMAT(date,fmt) 返回按字符串 fmt 格式化日期 date 值
DATE_ADD(date,INTERVAL,expr type) 返回上一个日期或时间值加上一个时间间隔的时间值
DATEDIFF(expr,expr2) 返回起始时间 expr 和结束时间 expr2 之间的天数
  • DATE_FORMAT(date,fmt) 函数

    按照 fmt 格式化日期 date 的值,可用的格式符如下:

    格式符 说明
    %S 或 %s 两位数字形式的秒
    %i 两位数字形式的分
    %H 两位数字形式的小时,24 小时
    %h 和 %I(大写 i) 两位数字形式的小时,12 小时
    %k 数字形式的小时,24 小时
    %l(小写 l) 数字形式的小时,12 小时
    %T 24 小时的时间形式
    %r 12 小时的时间形式
    %p AM 或 PM
    %W 一周中每一天的名称
    %a 一周中每一天名称的缩写
    %d 两位数字表示月中的天数
    %e 数字形式表示月中的天数
    %D 英文后缀表示月中的天数
    %w 以数字形式表示周中的天数
    %j 3 位数字表示年中的天数
    %U 周,其中 Sunday 为周中第一天
    %u 周,其中 Monday 为周中第一天
    %M 月名
    %b 缩写的月名
    %m 两位数字表示的月份
    %c 数字表示的月份
    %Y 4 位数字表示的年份
    %y 两位数字表示的年份
    %% 直接值 “%”
    mysql> select now(),DATE_FORMAT(now(),'%M,%D,%Y'),DATE_FORMAT(now(),'%M,%D,%Y,%H,%i,%s');
    +---------------------+-------------------------------+----------------------------------------+
    | now()               | DATE_FORMAT(now(),'%M,%D,%Y') | DATE_FORMAT(now(),'%M,%D,%Y,%H,%i,%s') |
    +---------------------+-------------------------------+----------------------------------------+
    | 2020-08-12 16:41:35 | August,12th,2020              | August,12th,2020,16,41,35              |
    +---------------------+-------------------------------+----------------------------------------+
    1 row in set (0.00 sec)
    
  • DATE_ADD(date,INTERVAL,expr type) 函数

    其中 INTERVAL 是间隔类型关键字,expr 是一个表达式,这个表达式对应后面的类型,type 是间隔类型,MySQL 提供了 13 种间隔类型:

    表达式类型 描述 格式
    HOUR 小时 hh
    MINUTE mm
    SECOND ss
    YEAR YY
    MONTH MM
    DAY DD
    YEAR_MONTH 年和月 YY-MM
    DAY_HOUR 日和小时 DD hh
    DAY_MINUTE 日和分钟 DD hh:mm
    DAY_SECOND 日和分钟 DD hh:mm:ss
    HOUR_MINUTE 小时和分 hh:mm
    HOUR_SECOND 小时和秒 hh:mm:ss
    MINUTE_SECOND 分和秒 mm:ss

    第一列返回当前日期,第二列返回距离当前日期 31 天后的日期,第三列返回距离当前日期一年两个月后的日期:

    mysql> select now() current,date_add(now(),INTERVAL 31 day) after31days,date_add(now(),INTERVAL '1_2' year_month) after_oneyear_twomonth;
    +---------------------+---------------------+------------------------+
    | current             | after31days         | after_oneyear_twomonth |
    +---------------------+---------------------+------------------------+
    | 2020-08-12 16:52:32 | 2020-09-12 16:52:32 | 2021-10-12 16:52:32    |
    +---------------------+---------------------+------------------------+
    1 row in set (0.00 sec)
    

    同样可以使用负数,返回之前的时间:

    mysql> select now() current,date_add(now(),INTERVAL -31 day) after31days,date_add(now(),INTERVAL '-1_-2' year_month) after_oneyear_twomonth;
    +---------------------+---------------------+------------------------+
    | current             | after31days         | after_oneyear_twomonth |
    +---------------------+---------------------+------------------------+
    | 2020-08-12 16:53:38 | 2020-07-12 16:53:38 | 2019-06-12 16:53:38    |
    +---------------------+---------------------+------------------------+
    1 row in set (0.00 sec)
    
  • DATEDIFF(expr,expr2) 函数

    计算两个日期之间相差的天数:

    mysql> select DATEDIFF('2008-08-08',now());
    +------------------------------+
    | DATEDIFF('2008-08-08',now()) |
    +------------------------------+
    |                        -4387 |
    +------------------------------+
    1 row in set (0.00 sec)
    

4、流程函数

函数 说明
IF(value,t f) 如果 value 为真,返回 t;否则返回 f
IFNULL(value1,value2) 如果 value1 不为空,返回 value1,否则返回 value2
CASE WHEN [value1] THEN[result1]…ELSE [default]END 如果 value1 是真,返回 result1,否则返回 default
CASE [expr] WHEN [value1] THEN[result1]… ELSE [default] END 如果 expr 等于 value1,返回 result1,否则返回 default

5、其他常用函数

函数 说明
DATABASE() 返回当前数据库名
VERSION() 返回当前数据库版本
USER() 返回当前登陆者名字
INET_ATON(IP) 返回 IP 地址的数字表示
INET_NTOA(num) 返回数字代表的 IP 地址
PASSWORD(str) 返回字符串 str 的加密密码
MD5() 返回字符串 str 的 MD5 值
相关标签: MySQL数据库基础