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');
日期函数
- 获取当前时间
- current_date() curdate() 获取当前年月日
- current_time() curtime() 获取当前分秒
- current_timestamp() 获取当前时间戳
- now() 获取当前年月日时分秒
- 获取时间参数
- year(date) 获取年
- month(date) 获取月
- dayofmonth(date) 获取号
- dayofweek(date) 获取星期 1-7 对应 日-六
- hour(date) 小时
- minute(date) 分
- second(date) 秒
- 时间参数设定指定值
- date_add(date, interval 值 时间单位); 对 date 操作指定的值
- 字符串 转 日期
sql select str_to_date('2001-11-23 13:12:11', '%Y-%m-%d %H:%i:%s');
- 日期 转 字符串
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');
# 日期 转 字符串
流程控制
- if ( 条件 , true 执行语句 , false 执行语句 )
- 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;