zoukankan      html  css  js  c++  java
  • mysql 常用函数

    -- 绝对值 100
    select abs(-100)
    -- 四舍五入 保留两位小数 4.6300
    select round(4.6288*100)/100

    -- 向下取整 9
    select floor(9.9)

    -- 向上取整 4
    select CEIL(3.2)

    -- 2的3次幂
    SELECT power(2,3)

    当前时间

     now(), 2019-08-09 09:22:51

    curdate(),  2019-08-09

    curtime() 09:22:51

    格式化日期

    select DATE_FORMAT(now(),'%Y')     2019

    DATE_FORMAT(now(),'%m')    08

    DATE_FORMAT(now(),'%d')   09 

    DATE_FORMAT(now(),'%H')  09 小时(24)

    DATE_FORMAT(now(),'%h')  09  小时(12)

    DATE_FORMAT(now(),'%i')   47  分钟

    DATE_FORMAT(now(),'%s')   20  秒

    DATE_FORMAT(now(),'%w')   5  星期5

     DATE_FORMAT(now(),'%W')    Friday     星期5

     DATE_FORMAT(now(),'%j')    本年第几天  221

    DATE_FORMAT(now(),'%U')     本年第几周  31

    DATE_FORMAT(now(),'%r')  时间(24) 09:48:01 AM 

    DATE_FORMAT(now(),'%T')   时间(12) 09:48:42

    日期偏移计算

    SELECT DATE_ADD(NOW(),INTERVAL 5 DAY)    2019-08-14 10:07:19   增加5天

    SELECT DATE_ADD(NOW(),INTERVAL -5 DAY)   2019-08-04 10:08:24   减少5天

    SELECT DATE_ADD(NOW(),INTERVAL -5 MINUTE)   减少5分钟

    SELECT DATE_ADD(NOW(),INTERVAL -5 HOUR)      减少5小时

    SELECT DATE_FORMAT(DATE_ADD(NOW(),INTERVAL -5 HOUR) ,"%Y/%m/%d")     2019/08/09

    计算两个时间 相差天数

     SELECT DATEDIFF('2019-7-9',NOw())     -31

    字符函数

    select LOWER('ERIC')   eric  转小写

    select upper('eric')   ERIC  转大写

    select LENGTH ('eric') 计算长度 4

    select CONCAT('eric','love','beijing')   字符串拼接   ericlovebeijing

    select INSERT('你好',1,0,'先生')  插入替换字符  先生你好

    select INSTR('eric','r')   2 字符出现的位置  没有返回0

    select REPLACE('你好先生','先生','女士')     你好女士  字符替换

    字符串截取

    select SUBSTR('你好世界',3,4) 世界
    select SUBSTRING('你好世界',3,1) 世

     select LPAD(SUBSTRING('13312345678',8,4),11,"*")   *******5678

     select RPAD(SUBSTRING('13312345678',1,7),11,"*")   1331234**** 

    select REPLACE('13312345678',SUBSTRING('13312345678',4,4), '****')     133****5678

     select RPAD(SUBSTRING('李晓娜',1,1),3,'*') 李**

    select TRIM('   Hello World      ')    去除两边空格

    条件判断 表达式

    select
    e.ename,e.empno,d.dname,
    if(d.dname = "SALES",'礼品A','礼品B')
    from t_emp e
    join t_dept d on d.deptno = e.deptno

    SMITH 7369 RESEARCH 礼品B
    ALLEN 7499 SALES 礼品A
    WARD 7521 SALES 礼品A
    JONES 7566 RESEARCH 礼品B
    MARTIN 7654 SALES 礼品A
    BLAKE 7698 SALES 礼品A

    /**
    SALES 去p1
    ACCOUNTING 去p2
    RESEARCH 去p3
    没部门的 去p4
    */

    select
    e.ename,e.empno,d.dname,
    CASE
    WHEN d.dname = "SALES" THEN 'P1'
    WHEN d.dname = "ACCOUNTING" THEN 'P2'
    WHEN d.dname = "RESEARCH" THEN 'P3'
    ELSE 'P4'
    END as place
    from t_emp e
    left join t_dept d on d.deptno = e.deptno

    ADAMS 7876 RESEARCH P3
    FORD 7902 RESEARCH P3
    ALLEN 7499 SALES P1
    WARD 7521 SALES P1
    MARTIN 7654 SALES P1
    BLAKE 7698 SALES P1
    TURNER 7844 SALES P1
    JAMES 7900 SALES P1
    李四 6789 P4

    /**
    SALES 超过20年 10%
    SALES 不满20 5%
    ACCOUNTING 300
    RESEARCH 低于部门平均底薪 200
    没有部门的员工,100元
    */


    update t_emp e LEFT JOIN t_dept d on e.deptno = d.deptno
    LEFT JOIN (select deptno, avg(sal) as avg from t_emp group by deptno) t on t.deptno = e.deptno
    set e.sal = (
    CASE
    WHEN d.dname = 'SALES' AND DATEDIFF(NOW(),e.hiredate)/365 >= 20 THEN sal * 1.1
    WHEN d.dname = 'SALES' AND DATEDIFF(NOW(),e.hiredate)/365 < 20 THEN sal * 1.05
    WHEN d.dname = 'ACCOUNTING' THEN e.sal + 300
    WHEN d.dname = 'RESEARCH' and e.sal < t.avg THEN e.sal + 200
    WHEN e.deptno IS NULL THEN sal + 100
    else e.sal
    END
    )

  • 相关阅读:
    UML类图
    # linux下安装Nodejs环境
    [原创] 如何编写一份不可维护的代码
    [原创作品]观察者模式在Web App的应用
    Thinking In Web [原创作品]
    [原创作品]Javascript内存管理机制
    [小知识] 获取浏览器UA标识
    [原创作品] 对获取多层json值的封装
    Javascript 精髓整理篇之三(数组篇)postby:http://zhutty.cnblogs.com
    [原创作品]一个实用的js倒计时器 postby:zhutty.cnblogs.com
  • 原文地址:https://www.cnblogs.com/ericblog1992/p/11326550.html
Copyright © 2011-2022 走看看