• 十六、MySQL常用函数有哪些?


    1、函数

            说到函数,就必须知道其本质是什么,在MySQL中,函数是指一段可以直接被另一段程序调用的程序或代码。

    2、字符串函数

    (1)函数

    (2)字符串连接函数

    1. 字符串连接函数:
    2. select concat(传入参数1,传入参数2,……)

    实际操作:

    1. # 传入参数为多个字符串,会将多个字符串连接起来
    2. select concat('Yang ','Hai ','tao');
    3. -- Yang Hai Tao

    (3)将大写转换为小写函数

    1. # 将传入参数中的大写字母,全部转换为小写字母
    2. select lower(传入参数)

    实际操作:

    1. # 将大写转换为小写
    2. select lower('HelL0');
    3. -- hello

    (4)将小写转换为大写函数

    1. # 将传入参数中的小写字母转换为大写字母
    2. select upper(传入参数)

    实际操作:

    1. # 将小写转换为大写
    2. select upper('hello');
    3. -- HELLO

    (5)左填充函数

    左填充,用(传入参数3)对(传入参数1)的左边进行填充,从而字符串最终的长度为n

    1. # 左填充,用(传入参数3)对(传入参数1)的左边进行填充,从而字符串最终的长度为n
    2. -- 注意,n指的是最终字符串的长度
    3. select lpad(传入参数1,n,传入参数3);

    实际操作:

    1. # 左填充,用(传入参数3)对(传入参数1)的左边进行填充,从而字符串最终的长度为n
    2. -- 注意,n指的是最终字符串的长度
    3. select lpad('g',4,'yan');
    4. -- yang

    (6)右填充函数

    1. # 右填充,用(传入参数3)对(传入参数1)的右边进行填充,从而字符串最终的长度为n
    2. select rpad(传入参数1,n,传入参数3);

    实际操作:

    1. # 右填充,用(传入参数3)对(传入参数1)的右边进行填充,从而字符串最终的长度为n
    2. select rpad('yan',4,'g');
    3. -- yang

    (7)去掉字符串头部和尾部空格函数

    1. # 去掉字符串头部和尾部的空格
    2. -- 注:传入参数头部、中间、尾部都有空格,但trim函数,只对头部和尾部的空格生效
    3. select trim('传入参数');

    实际操作:

    1. # 去掉字符串头部和尾部的空格
    2. -- 注:传入参数头部、中间、尾部都有空格,但trim函数,只对头部和尾部的空格生效
    3. select trim(' Yang hai tao ');
    4. -- Yang hai tao

    (8)返回传入参数1从start位置起的len个长度的字符串

    1. # 返回传入m从start位置起的len个长度的字符串
    2. -- start=数字m,代表从第几个字符开始
    3. select substring('YangHaiTao',m,len);

    实际操作:

    1. # 返回传入参数1start位置起的len个长度的字符串
    2. -- start=数字,代表从第几个字符开始
    3. select substring('YangHaiTao',1,4);
    4. -- Yang

    3、数值函数

    (1)向上取整数函数

    1. 向上取整数
    2. select ceil(传入参数);

     实际操作:

    传入参数等于1.5,向上取整数,代表大于1.5的最小整数

    1. # 向上取整:
    2. select ceil(1.5);
    3. -- 2

    (2)向下取整数函数

    1. 向下取整数
    2. select floor(传入参数);

    实际操作:

    传入参数为1.5,向下取整数,即为求不大于1.5的最小整数

    1. # 向下取整:
    2. select floor(1.5);
    3. -- 1

    (3)取模

    1. # 取模:
    2. select mod(传入参数x,传入参数y);

    实际操作: 

    1. # 取模:
    2. select mod(5,3);
    3. -- 2;5-3*[5/3]=5-3*1=2

    (4)返回一个0~1内的随机数

    1. # 返回一个0~1内的随机数:
    2. select rand();

     实际操作:

    1. # 返回一个0~1内的随机数:
    2. select rand();
    3. -- 0.39300280846003705

    (5)对传入参数x四舍五入,保留y位小数

    1. # 求参数x四舍五入的值,保留y位小数:
    2. 传入参数1:小数
    3. 小数点后保留n位
    4. select round(传入参数1,n);

    实际操作: 

    1. # 求参数x四舍五入的值,保留y位小数:
    2. select round(2.3453223,3);
    3. -- 2.345

    (6)案例:

    题目:

    通过数据库函数,生成一个六位数的随机验证码。

    解题思路:

    -- 第一步:先调用rand函数,生成0~1之间的随机小数,再将其乘以1000000

    -- 第二步:再调用round函数,将传入数字进行四舍五入,小数点后保留零位

    -- 第三步:为了避免第一步生成的随机小数十分位为0,所以调用字符串函数lpad,将长度设置为6,从左边开始补位(补0)

    -- 第四步:输出六位随机验证码

    解答:

    select lpad(round(rand()*1000000,0),6,0);

    4、 日期函数

    (1) 返回当前日期:

    1. /*返回当前日期*/
    2. select curdate();
    3. -- 2023-09-06 4

    (2)返回当前时间:

    1. /*返回当前时间*/
    2. select curtime();
    3. -- 17:25:29

    (3)返回当前时间和日期:

    1. /*返回当前日期和时间*/
    2. select now();
    3. -- 2023-09-06 17:28:23

    (4)获得指定date的年份:

    1. /*获得指定date的年份*/
    2. select year(now());
    3. -- 2023

    (5)获得指定date的月份:

    1. /*获得指定date的月份*/
    2. select month(now());
    3. -- 9

    (6)获得指定date的日期:

    1. /*获得指定date的日期*/
    2. select day(now());
    3. -- 6

    (7)返回设定时间区间之后的日期:

    1. /*返回一个日期,其时间值加上一个时间间隔expr后的时间值*/
    2. select date_add(now(),interval 70 day);
    3. -- 2023-11-15 17:37:25

    (8)求两个指定时间之间相差的天数:

    1. /*求两个指定时间之间相差的天数*/
    2. select datediff('2022-01-02','2021-10-02');
    3. -- 92

    5、流程函数

    (1)if(传入参数1,传入参数2,传入参数3)

    如果传入参数1为True,则返回传入参数2,否则返回传入参数3

    1. # if(传入参数1,传入参数2,传入参数3)
    2. # 如果传入参数1True,则返回传入参数2,否则返回传入参数3
    3. select if(true,'ok','Error');
    4. -- ok

    (2)ifnull(传入参数1,传入参数2)

    如果传入参数1不为null,则输出传入参数1,如果为null,则输出传入参数2

    1. # ifnull(传入参数1,传入参数2)
    2. select ifnull('ok','Error');
    3. -- ok
    4. select ifnull(null,'Error');
    5. -- Error

    (3)case 传入参数1 when ’a‘ then 'b' else 'c' end

            如果传入参数1等于‘a’,那么输出‘b’,如果传入参数不等于‘a’,那么输出‘c’,其中when和then可以叠加。

    1. # case 传入参数1 when ’a‘ then 'b' else 'c' end
    2. # 如果传入参数1等于‘a’,那么输出‘b’,如果传入参数不等于‘a’,那么输出‘c’,其中whenthen可以叠加
    3. select
    4. number,
    5. name,
    6. case place
    7. when '北京' then '一线城市'
    8. when '上海' then '一线城市'
    9. else '二线城市' end
    10. from
    11. people;

    (4) select case 传入参数1 when m then n else x end

    给case传入参数1,如果传入参数1等于m,则返回n,如果传入参数1不等于m,则返回x;

    select case 'jom' when 'jom' then 'kom' else 'JOM' end;

  • 相关阅读:
    2020CCPC 秦皇岛站 个人题解
    【考研数学】线性代数第六章 —— 二次型(2,基本定理及二次型标准化方法)
    怎样能更快速的整理软考高项教材的知识考点?
    MySQL高级-01.Linux系统下安装MySQL
    OpenHarmony教程—语言基础类库
    零零信安-D&D数据泄露报警日报【第44期】
    LLVM编译安装
    Vue Admin Template关闭eslint校验,lintOnSave:false设置无效解决办法
    Vue中如何进行音视频录制与视频剪辑
    petite-vue源码剖析-从静态视图开始
  • 原文地址:https://blog.csdn.net/2301_79149013/article/details/132722462