常用函数
字符串相关函数
函数 | 用法 |
---|
charset(str) | 返回字符串字符集 |
concat(str2 , ...) | 连接字符串 |
ucase(string) | 转换成大写 |
lcase(string) | 转换成小写 |
length(string) | string 长度(按字节) |
replace(str, search_str, replace_str) | 在 str 中用replace_str 替换search_str |
substring(str, a [, b]) | 从str 的 a 开始(从1开始)取 b 个字符 |
instr(string, str) | 返回str 在string中出现的位置,没有返回0 |
left(string, a) / right | 从string 中左边/右边起取 a 个字符 |
strcmp(string1, string2) | 逐字符比较两字符串大小 |
ltrim(string) / rtrim(string) | 去除前端 / 后端空格 |
trim(string) | 去除两端空格 |
select charset(`name`) from `user`;
select concat(name,'的年龄:',age) as 'introduce' from `user`;
select instr('asdfgh', 'df')from dual;
select ucase(`name`) from `user`;
select lcase(`name`) from `user`;
select left(name, 2) from `user`;
select right(name, 3) from `user`;
select name, replace(sex,'男','女') as sex from user;
select substring(name,2,2) as name from user;
select concat(Lcase(left(name,1)),ucase(substring(name,2))) from user;
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
数学函数
函数 | 用法 |
---|
abs(num) | 绝对值 |
ceiling(num) | 向上取整 |
floor(num) | 向下取整 |
format(number, decimal_places) | 保留小数位数 |
rand([seed]) | 范围是 [ 0, 1.0 ] |
bin(decimal_number | 十进制转二进制 |
conv(num, from_base, to_base) | 进制转换 |
hex(decimalNumber) | 转十六进制 |
least(num1,num2 [, ...]) | 求最小值 |
mod(numerator,denominator) | 求余 |
- rand():返回范围为在[0, 1.0]之间的随机浮点数
select conv(8, 10, 2) from dual;
select format(54.6445,3) from dual;
select mod(10,3) from dual
select format( rand(), 2) as num1 from dual;
select format( rand(4), 2) as num2 from dual;
函数 | 用法 |
---|
now() | 当前时间(年月日 时分秒) |
current_date() | 当前日期(年月日) |
current_time() | 当前时间(时分秒) |
current_timestamp() | 当前时间戳(年月日 时分秒) |
date(datetime) | 返回datetime的日期部分 |
date_add(date2, interval d_value d_type) | 在date2中加上日期或时间 |
date_sub(date2, interval d_value d_type) | 在date2中减去一个时间 |
datediff(date1, date2) | 时间差(天数差) |
timediff(date1, date2) | 时间差(时分秒的差) |
year / month / date(datetime) | 年/月/日 |
unix_timestamp() | 1970-10-01至今的秒数 |
from_unixtime() | 把秒数转为指定格式日期 |
date_add/sub(date, interval d_value d_type)
date
:原数据的日期
- 可以是 date、datetime、timestamp 类型
d_value
:要计算的时间值d_type
:年year、月month、日day、时hour、分minute、秒second
datediff(date1, date2)
:得到 date1 - date2 的差值,单位是天- year/month/day(date):只得到date中对应的字段
from_unitime(毫秒数,日期格式)
:秒数转为指定格式日期
- 从 1970-10-01 开始计算的秒数转换为对应的日期
- %Y-%m-%d %H-%i-%s:年月日 时分秒的固定格式
- 在开发中可以用 int 存放一个 unix时间戳,再用该函数转换
- 日期数据可以直接比较;格式最好一样
select date(`date`) as now from news;
select * from mes
where date_add(`date`, interval 10 minute) >= now();
select datediff( now(), '1999-10-07') as date;
select year(now()) as year;
select month(now()) as month;
select day(now()) as day;
select from_unixtime(unix_timestamp(), '%Y-%m-%s')
select now() > '2012-01-20'
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
加密函数
函数 | 用法 |
---|
user() | 查询用户 |
database() | 数据库名称 |
MD5(str) | 为字符串算出一个MD5 32位 的字符串(用户密码)加密 |
password(str) | 从原文密码str 计算并返回密码字符串 |
- md5:将字符串(密码)加密为32位的字符串
- 一般存放密码时定义数据类型为 char(32)
- 使用 md5(password) 存放密码
- password():加密,数据库的密码默认使用此方式加密
mysql.user
:数据库名.表名;在一个库中直接查询另一个库的表
select user();
select database();
insert into values(01,'name',md5(password));
流程控制函数
函数 | 用法 |
---|
if(expr1, expr2, expr3) | 如果expr1为true返回expr2,否则返回expr3 |
ifnull(expr1, expr2) | 如果expr1不为null返回expr1,否则返回expr2 |
select case when expr1 then expr2 when expr3 then expr4 else expr5 end | 如果expr1为true返回expr2,若expr3为true返回expr4,否则返回expr5 |
when ... then ... end
- 当第一个条件为true返回第二个值,为false则进行下一个when,直到end结束
- 判断为空: is null; 不为空:is not null
- 显示某条记录某一列字段为空:is null
select * from user where '上级' is null;
select case
when expr1 then expr2
when expr3 then expr4 else expr5 end