MySQL---函数

MySQL---函数

数学函数

  • abs(n) 绝对值

select abs(-1), abs(1);
```

  • 近似值 ceil(n) 大于等于参数的最小整数 floor(n) 大于等于参数的最大整数

select ceil(2.4), ceil(-2.4), floor(3.6), floor(-1.2);
```

  • 四舍五入 round(n) round(n,m) 四舍五入保留m位小数

select round(2.5), round(2.5678, 1);
```

  • 保留小数 truncate(n,m) 保留m位小数

select truncate(2.5222, 1);
```

  • 开方 sqrt(n) n的m次方 pow(n,m)

select sqrt(18), pow(2, 3);
```

  • 随机 rand() (0,1] 的小数

select rand();
```

  • 随机 1-9 随机 [a,b] truncate(rand()*(b-a+1)+a,0);
    select truncate(rand() * 9 + 1, 0);
    
  • 求余数 mod(n,m) n%m

select mod(5, 3);
```

  • 进制转换 bin(n) n的二进制 HEX(n) 获取16进制的n
select bin(13), HEX(40);



***

字符串函数

  • length(str) 获取字节个数

    • char_length(str) 获取字符个数
    select length('abc12呵呵'), char_length('abc12呵呵');
    
  • substring(str,start,length) 截取从 start 开始,共计 length 个字符

    • substring(str,start) 截取从 start 开始,到末尾
    • 注意:字符串索引从 1 开始
    select substring('abcdef', 1, 2);
    

select substring('abcdef', 1);
```

  • ASCII(str) 获取第一个字符在编码表中对应的整数

    select ASCII('ab');
    
  • concat(str1,str2) 字符串拼接

    select concat('abc', 11, true);
    
  • trim(str) 去除两边的空格

    select trim('   fds f  ');
    
    • ltrim(str) 去除左边的空格
    select ltrim(' ---fsdf--   ');
    
    • rtrim(str) 去除右边的空格
    select rtrim(' ----fafds-   ');
    
  • reverse(str) 翻转字符串

    select reverse('abcdefg');
    
  • lower(str) 转为小写

    select lower('AAAAA');
    
  • upper(str) 转为大写

    select upper('aaaaa');
    

日期函数

  1. 获取当前时间
    • current_date() curdate() 获取当前年月日
    • current_time() curtime() 获取当前分秒
    • current_timestamp() 获取当前时间戳
    • now() 获取当前年月日时分秒
  2. 获取时间参数
    • year(date) 获取年
    • month(date) 获取月
    • dayofmonth(date) 获取号
    • dayofweek(date) 获取星期 1-7 对应 日-六
    • hour(date) 小时
    • minute(date) 分
    • second(date) 秒
  3. 时间参数设定指定值
    • date_add(date, interval 值 时间单位); 对 date 操作指定的值
  4. 字符串 转 日期
    • sql select str_to_date('2001-11-23 13:12:11', '%Y-%m-%d %H:%i:%s');
  5. 日期 转 字符串
    • sql select date_format(now(), '%Y-%m-%d %H:%i:%s');
select now(), current_date, current_time, CURRENT_TIMESTAMP;
select curdate();
select curtime();
select now(),
       year(now()),
       month(now()),
       day(now()),
       hour(now()),
       minute(now()),
       second(now()),
       DAYOFWEEK(now());

select date_add(now(), interval 1 second);
# SELECT STR_TO_DATE('00/00/0000', '%m/%d/%Y');

select str_to_date('2001-11-23', '%Y-%m-%d');
select str_to_date('2001/11/23', '%Y/%m/%d');
select str_to_date('2001-11-23 13:12:11', '%Y-%m-%d %H:%i:%s');
# 字符串 转 日期
select date_format(now(), '%Y-%m-%d %H:%i:%s');
# 日期 转 字符串


流程控制

  1. if ( 条件 , true 执行语句 , false 执行语句 )
  2. case 语句
CASE case_value
    WHEN when_value THEN statement_list
    [WHEN when_value THEN statement_list] ...
    [ELSE statement_list]
END CASE

OR:

CASE
    WHEN search_condition THEN statement_list
    [WHEN search_condition THEN statement_list] ...
    [ELSE statement_list]
END CASE
select tage,
       case
           when tage <= 18 then '未成年'
           when tage <= 20 then '成年'
           when tage <= 25 then '大哥'
           else '大叔'
           end
from tab_3;



select tage,
       case tage
           when 18 then '少年'
           when 20 then '成年'
           else '其他'
           end
from tab_3;
原文地址:https://www.cnblogs.com/javayanglei/p/13305272.html