• MySQL | 单行函数 |时间函数 | 系统函数


    函数

    单行函数

    函数作用备注
    ABS(x)返回x的绝对值
    SIGN(X)返回 x 的符号。证书返回 1,负数返回-1,0 返回0
    PI()返回圆周率的值
    CEIL(X),CEILING(X)返回大于或等于某个值的最小整数
    FLOOR(X)返回小于或等于某个值的最大整数
    LEAST(e1,e2,e3…)返回列表中最小值
    GREATEST(e1,e2,e3…)返回列表中最大值
    MOD(x,y)返回 x 除以 y 后的余数
    RAND()返回 0~1 的随机值
    RAND(x)返回 0~1 的随机值,其中 x 的值作为种子值,相同的 x 值会产生相同的随机数
    ROUND(x)返回一个对 x 的值进行四舍五入后最接近 x 的证书
    ROUND(x,y)返回一个队 x 的值进行四舍五入后最接近 x 的值,并保留到小数点后面 Y位
    TRUNCATE(x,y)返回数字 x 截断为 y 为小数的结果
    SQRT(x)返回 x 的平方根。当 x 的值为负数是,返回 NULL

    一些函数

    SELECT ABS(-5),ABS(4),SIGN(10),SIGN(-10),SIGN(0),FLOOR(32.32),CEIL(32.32),CEILING(-43.32),CEILING(-43.32),CEILING(32.32),FLOOR(-43.32),MOD(12,5)  FROM DUAL;
    ## 5	4	1	-1	0	32	33	-43	-43	33	-44	2
    
    • 1
    • 2

    RAND | 随机数

    相同的 x 会导致结果相同

    SELECT RAND(),RAND(),RAND(0),RAND(0),RAND(10),RAND(10),RAND(-1),RAND(-1);
    # 0.11622921760774145	0.1567088152810082	0.15522042769493574	0.15522042769493574	0.6570515219653505	0.6570515219653505	0.9050373219931845	0.9050373219931845
    
    • 1
    • 2

    ROUND | 四舍五入

    SELECT ROUND(125.555),ROUND(125.49),ROUND(-12.56),ROUND(-12.49),ROUND(123.456,1),ROUND(123.456,2),ROUND(123.456,-1),ROUND(123.456,-2);
    # 126	125	-13	-12	123.5	123.46	120	100
    
    • 1
    • 2

    TRUNCATE | 截断操作

    SELECT TRUNCATE(123.456,0),TRUNCATE(123.456,1),TRUNCATE(123.456,-1) FROM DUAL;
    # 123	123.4	120
    
    • 1
    • 2

    单行函数的嵌套

    SELECT TRUNCATE(ROUND(123.456,2),0) FROM DUAL;
    # 123 
    
    • 1
    • 2

    三角函数

    函数作用备注
    SIN(x)返回 x 的正弦值,其中,参数 x 为弧度值
    ASIN(x)返回 x 的反正限制,即获取正弦为 x 的值,如果 x 的值不在-1~1 之间,则返回 null
    COS(x)返回 x 的余弦值,其中,参数 x 为弧度值
    ACOS(x)返回 x 的反余弦值,即获取余弦为 x 的值,如果 x 的值不在-1~1 之间,则返回 null
    TAN(x)返回 x 的正切值,其中,参数 x 为弧度值
    ATAN(x)返回 x 的反正切值,即返回正切值为 x 的值
    ATAN2(m,n)返回两个参数的反正切值
    COT(x)返回 x 的余切值,其中,x 为弧度值
    SELECT SIN(5),ACOS(0.6) FROM DUAL;
    # -0.9589242746631385	0.9272952180016123
    
    • 1
    • 2

    指数 与 对数

    函数用法备注
    POW(x,y) POWER(x,y)返回 x 的 y 次方
    EXP(x)返回 e 的 x 次方ex
    LN(x),LOG(x)返回以 e 为底的 x 的对数,当 x≤0 时,返回结果是NULL
    LOG10(x)返回结果以 10 为底的 X 的对数,当 X≤0 是,返回的结果为NULL
    LOG2(x)返回以 2 为底的 x 的对数,当 x≤0 时,返回NULL
    SELECT POW(2,3),POWER(2,4),EXP(2) FROM  DUAL;
    # 8	16	7.38905609893065
    
    • 1
    • 2

    EXP(x) 是ex

    mysql> SELECT EXP(2);
    +------------------+
    | EXP(2)           |
    +------------------+
    | 7.38905609893065 |
    +------------------+
    1 row in set (0.01 sec)
    
    mysql> SELECT LN(EXP(2));
    +------------+
    | LN(EXP(2)) |
    +------------+
    |          2 |
    +------------+
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    进制转换函数

    函数作用备注
    BIN(x)返回 x 的二进制
    OCT(x)返回 x 的八进制
    HEX(x)返回 x 的十六进制
    CONV(x,f1,f2)返回 f1 进制变成 f2 进制
    SELECT BIN(123089471290387402) FROM DUAL;
    # 110110101010011010011100011010011110110101010101111001010
    SELECT CONV(15,16,8) FROM DUAL;
    # 25
    
    • 1
    • 2
    • 3
    • 4

    字符串函数

    函数作用备注
    ASCII(s)返回字符串 s 中的第一个字符的 ASCII 码值
    CHAR_LENGTH(s)返回字符串 s 的字符数。作用与 CHARACTER_LENGTH(s)相同
    LENGTH(s)返回字符串 s 的字节数,和字符集有关
    CONCAT(s1,s2…,sn)连接 s1,s2…sn为一个字符串
    CONCAT_WS(x,s1,s2…,sn)同上,但是每个字符串之间要加上 x
    INSERT(str,idx,len,replacestr)将字符串 str 从第 idx 位置开始,len 个字符长的子串替换为字符串 replacestr
    REPLACE(str,a,b)用字符串 b 替换字符串 str 中弄过所有出现的字符串 a
    UPPER(s) 或 UCASE(s)将字符串 s 的所有字母转换成大写字母
    LOWER(s) 或 LCASE(s)将字符串 s 的所有字母转换成小写字母
    LEFT(str,n)返回字符串 str 最左边的 n 个字符
    RIGHT(str,n)返回字符串 str 最右边的 n 个字符
    LPAD(str,len,pad)字符串总长度为 10,不满的在左侧插入 pad(右对齐)
    RPAD(str,len,pad)字符串总长度为 10,不满的在右侧插入 pad(左对齐)
    LTRIM(s)去除字符串 s 的左侧空格
    RTRIM(s)去除字符串 s 的右侧空格
    TRIM(s)去除字符串 s 的首尾空格
    TRIM(s1 FROM s)去掉字符串 s 开始与结尾的 s1
    TRIM(LEADING s1 FROM s)去掉字符串 s 开始处的s1
    TRIM(TRAILING s1 FROM s)去掉字符串 s 结尾处的 s1
    REPEAT(str,n)返回 str 重复 n 次的结果
    SPACE(n)返回 n 个空格
    STRCMP(s1,s2)比较字符串 s1,s2 的 ASCII 码值的大小
    SUBSTR(s,index,len)返回从字符串 s 的 index 位置其 len 个字符,作用于 SUBSTRING(s,n,len)、MID(s,n,len)相同
    LOCATE(substr,str)返回字符串 substr 在字符串 str 中首次出现的位置,作用与 POSITION(substr IN str)、INSTR(str,substr)相同,未找到则返回 0
    ELT(m,s1,s2,…,sn)返回指定位置的字符串,如果m=1,则返回s1,如果m=2,则返回s2,如果m=n,则返回sn
    FIELD(s,s1,s2,…,sn)返回字符串s在字符串列表中第一次出现的位置
    FIND_IN_SET(s1,s2)返回字符串s1在字符串s2中出现的位置。其中,字符串s2是。一个以逗号分隔的字符串
    REVERSE(s)返回 s 反转后的字符串
    NULLIF(value1,value2)比较两个字符串,若是相等则返回 NULL,否则返回value1
    SELECT ASCII('abc'),CHAR_LENGTH('hello'),LENGTH('hello'),CHAR_LENGTH('你好'),LENGTH('你好') FROM DUAL;
    # 97	5	5	2	6
    
    • 1
    • 2

    注意:

    • 中文的 你好LENGTH为5,你好CHAR_LENGTH 为2
    • 字符串的索引是从1开始的
    SELECT TRIM('    hel      lo    ');
    # `hel      lo`
    SELECT REVERSE('ajksfghdfjuyagesufgkavdcsdekuy');
    # yukedscdvakgfusegayujfdhgfskja
    
    • 1
    • 2
    • 3
    • 4

    ⌚️日期和时间函数

    函数作用备注
    CURDATE() / CURRENT_DATE()获取当前日期,包含年、月、日
    CURTIME() / CURRENT_TIME()获取当前时间,包含时、分、秒
    NOW() / SYSDATE() / CURRENT_TIMESTAMP() / LOCALTIME() / LOCALTIMESTAMP()返回当前系统日期和时间
    UTC_DATE ()返回UTC(世界标准时间)日期

    日期与时间戳转换

    函数作用备注
    UNIX_TIMESTAMP()以Unix时间戳的形式返回房钱时间。SELECT UNIX_TIMESTAMP();–>1661173047
    UNIX_YIMESTAMP(date)将时间date以Unix时间戳的形式返回
    FROM_UNIXTIME(timestamp)将UNIX时间戳的时间转换为普通格式的时间

    获取月份、星期、星期天、天数等函数

    函数用法备注
    YEAR(date) / MONTH(date) / DAY(date)返回具体的日期值
    HOUR(time) / MINUTE(time) / SECOND(time)返回具体的时间值
    MONTHNAME(date)返回月份:January,…
    DAYNAME(date)返回星期几,注意:周一是0,周二是1…周日是6
    QUARTER(date)返回日期对应的季节,范围是1~4
    WEEK(date),WEEKOFYEAR(date)返回一年中的第几周
    DAYOFYEAR(date)返回日期是一年中的第几天
    DAYOFMONTH(date)返回日期位于所在月份的第几天
    DAYOFWEEK(date)返回洲际,注意:周日是1,周一是2…周六是7

    日期的操作函数

    函数
    EXTRACT(type FROM date)返回指定日期的特定部分,type值返回值的类型
    Type 类型作用Type 类型作用
    MICROSECOND毫秒数SECOND
    MINUTE分钟HOUR小时
    DAYWEEK日期在一年中的第几个星期
    MONTH日期在一年中的第几个月QUARTER日期在一年中的第几个季度
    YEAR日期的年份SECOND_MICROSECOND返回秒和毫秒值
    MINUTE_MICROSECOND返回分钟和毫秒值MINUTE_SECOND返回分钟和秒值
    HOUR_MICROSECOND返回小时和毫秒值HOUR_SECOND返回小时和秒值
    HOUR_MINUTE返回小时和分钟值DAY_MICROSECOND返回日期和毫秒值
    DAY_SECOND返回日期和秒值DAY_MINUTE返回日期和分钟值
    DAY_HOUR返回日期和小时值YEAR_MONTH返回年和月

    时间和秒钟转换的函数

    函数作用备注
    TIME_TO_SEC(time)将time转化为秒并返回结果值。转化的公式为:小时*3600+分钟*60+秒
    SEC_TO_TIME(time)将seconds描述转化为包含小时、分钟和秒的时间

    计算时间与日期的函数

    函数作用备注
    DATE_ADD(datetime, INTERVAL expr type),
    ADDDATE(date,INTERVAL expr type)
    返回与给定日期时间相差INTERVAL时间段的日期时间
    DATE_SUB(date,INTERVAL expr type),
    SUBDATE(date,INTERVAL expr type)
    返回与date相差INTERVAL时间间隔的日斯

    日期的格式化与解析

    函数作用备注
    DATE_FORMATE(date,fmt)按照字符串fmt格式化日期date值
    TIME FORMAT(time,fmt)按照字符串fmt格式化时间time值
    GET_FORMAT(date_type,format_type)返回日期字符串的显示格式
    STR_TO_DATE(str, fmt)按照宇符串fmt对str进行解析,解析为一个日期

    流程控制函数

    流程处理函数可以根据不同的条件,执行不同的处理流程,可以在SQL语句中实现不同的条件选择。MysQL中的流程处理函数主要包括IF()、IFNULL()和CASE()西数。

    函数作用备注
    IF(vaine,value1,value2)如果value的值为TRUE,返回value1,否则
    返回value2
    IFNULL(value1, value2)如果value1不为NULL,返回value1,否则返
    回value2
    CASE WHEN 条件1THEN结果1WHEN 条件2THEN 结果2…ELSE
    resultn] END
    相当于Java的i.else if…else…
    CASE expr WHEN 常量值1THEN 值1 WHEN 常量值1THEN 值1…
    ELSE (En] END
    相当于Java的switch…case.

    IF

    SELECT IF(1,2,3),IFNULL(123,456),IFNULL(NULL,456);
    # 2	123	456
    SELECT name,salary,IF(salary>6000,'高工资','低工资') "DETAILS" FROM employees;
    
    • 1
    • 2
    • 3

    CASE WHEN

    SELECT salary,CASE WHEN salary>=15000 THEN '白骨精'
    									 WHEN	salary>=10000 THEN '潜力股'
    									 WHEN	salary>=8000 THEN '还不错'
    									 ELSE '小屌丝' END
    FROM employees;								
    
    • 1
    • 2
    • 3
    • 4
    • 5

    CASE expr WHEN

    SELECT salary,CASE department WHEN 10 THEN salary*1.1
    									 WHEN	20 THEN salary*1.2
    									 WHEN	30 THEN salary*1.3
    									 ELSE salary*1.4 END "Salary"
    FROM employees;		
    
    • 1
    • 2
    • 3
    • 4
    • 5

    加密

    PASSWORD

    在 MySQL8.0中已经弃用

     SELECT PASSWORD('MySQL') FROM DUAL;
    
    • 1

    MD5 | SHA

    不可逆的加密方式

    SELECT MD5('MySQL'),SHA('MySQL') FROM DUAL;
    
    • 1

    | 62a004b95946bb97541afa471dcca73a | deaa0c393a6613972aaccbf1fecfdad67aa21e88 |

    ENCODE | D

  • 相关阅读:
    数据结构 第六章 树与二叉树(一)
    高效搜索采集工具,让营销人员更轻松
    Nginx正向代理,反向代理和负载均衡
    【小黑嵌入式系统第一课】嵌入式系统的概述(一)
    MongoDB多个collection更新的Transaction 实现
    自动推送消息时附带图片的一种实现方式
    计算机毕业设计之社区居家养老服务系统
    Java版企业电子招标采购系统源码—企业战略布局下的采购寻源
    1027 Colors in Mars
    讲座学习截图——《CAD/CAE/CAM几何引擎-软件概述》:概念阐述,几何内核,CAD软件介绍
  • 原文地址:https://blog.csdn.net/Hsk_03/article/details/126492768