image.png

    1. -- ---------------------------------------------------- 函数演示 ------------------------------
    2. -- 字符串函数
    3. -- concat
    4. select concat('Hello' , ' MySQL');
    5. -- lower
    6. select lower('Hello');
    7. -- upper
    8. select upper('Hello');
    9. -- lpad
    10. select lpad('01', 5, '-');
    11. -- rpad
    12. select rpad('01', 5, '-');
    13. -- trim
    14. select trim(' Hello MySQL ');
    15. -- substring
    16. select substring('Hello MySQL',1,5);
    17. -- 案例: 由于业务需求变更,企业员工的工号,统一为5位数,目前不足5位数的全部在前面补0。比如: 1号员工的工号应该为00001
    18. update emp set workno = lpad(workno, 5, '0');
    19. -- -------------------------------------------------------------------------------------------------------------
    20. -- 数值函数
    21. -- ceil
    22. select ceil(1.1);
    23. -- floor
    24. select floor(1.9);
    25. -- mod
    26. select mod(7,4);
    27. -- rand
    28. select rand();
    29. -- round
    30. select round(2.344,2);
    31. -- 案例: 通过数据库的函数,生成一个六位数的随机验证码。
    32. select lpad(round(rand()*1000000 , 0), 6, '0');
    33. -- --------------------------------------------------------------------------------------------------------
    34. -- 日期函数
    35. -- curdate()
    36. select curdate();
    37. -- curtime()
    38. select curtime();
    39. -- now()
    40. select now();
    41. -- YEAR , MONTH , DAY
    42. select YEAR(now());
    43. select MONTH(now());
    44. select DAY(now());
    45. -- date_add
    46. select date_add(now(), INTERVAL 70 YEAR );
    47. -- datediff
    48. select datediff('2021-10-01', '2021-12-01');
    49. -- 案例: 查询所有员工的入职天数,并根据入职天数倒序排序。
    50. select name, datediff(curdate(), entrydate) as 'entrydays' from emp order by entrydays desc;
    51. -- 流程控制函数
    52. -- if
    53. select if(false, 'Ok', 'Error');
    54. -- ifnull
    55. select ifnull('Ok','Default');
    56. select ifnull('','Default');
    57. select ifnull(null,'Default');
    58. -- case when then else end
    59. -- 需求: 查询emp表的员工姓名和工作地址 (北京/上海 ----> 一线城市 , 其他 ----> 二线城市)
    60. select
    61. name,
    62. ( case workaddress when '北京' then '一线城市' when '上海' then '一线城市' else '二线城市' end ) as '工作地址'
    63. from emp;
    64. -- 案例: 统计班级各个学员的成绩,展示的规则如下:
    65. -- >= 85,展示优秀
    66. -- >= 60,展示及格
    67. -- 否则,展示不及格
    68. create table score(
    69. id int comment 'ID',
    70. name varchar(20) comment '姓名',
    71. math int comment '数学',
    72. english int comment '英语',
    73. chinese int comment '语文'
    74. ) comment '学员成绩表';
    75. insert into score(id, name, math, english, chinese) VALUES (1, 'Tom', 67, 88, 95 ), (2, 'Rose' , 23, 66, 90),(3, 'Jack', 56, 98, 76);
    76. --
    77. select
    78. id,
    79. name,
    80. (case when math >= 85 then '优秀' when math >=60 then '及格' else '不及格' end ) '数学',
    81. (case when english >= 85 then '优秀' when english >=60 then '及格' else '不及格' end ) '英语',
    82. (case when chinese >= 85 then '优秀' when chinese >=60 then '及格' else '不及格' end ) '语文'
    83. from score;