常见函数
-
语法:
select 函数名(实参列表) 【from 表】; -
分类:
- 单行函数
字符函数
concat:连接
substr:截取子串
upper:大写
lower:小写
replace:替换
length:获取字节长度
trim:去除前后空格
lpad:左填充
rpad:右填充
instr:获取子串第一次出现的索引
数学函数
ceil:向上取整
round:向下取整
mod:取模
floor:向下取整
truncate:截断
rand:获取随机数,返回0-1之间的小数
日期函数
now:返回当前日期+时间
year:返回年
month:返回月
day:返回日
data_format:将日期转换成字符
curdate:返回当前日期
curtime:返回当前时间
str_to_data:将字符转换成日期
datadiff:返回两个日期相差得天数
monthname:以英文形式返回月
其他函数
version:当前数据库服务器版本
database:当前打开的数据库
user:当前用户
password(‘字符’):返回该字符得的加密形式
md5(‘字符’):返回该字符得的加密形式
流程控制函数
if(条件表达式, 表达式1, 表达式2);
case 变量或者表达式或者字段
when 常量1 then 值1
when 常量2 then 值2
…
else 值n
end;case
when 条件1 then 值1
when 条件2 then 值2
…
else 值n
end;
- 分组函数
max, min, sum, avg,count
- 功能:做统计使用,又称为统计函数
- 语法:select max(【distinct】字段) from 表名
- 支持: sum和avg一般用于处理数值型,max、min、count可以处理任何数据类型。以上分组函数都可以支持null
单行函数
1、字符函数
length获取参数值的字节个数
SELECT LENGTH("holy"); #4
SELECT LENGTH("长度"); #3*2
concat 拼接字符串
SELECT CONCAT(uname, '_', upassword) FROM userinfo;
upper大写, lower小写
SELECT UPPER("hLow"), LOWER("Hlow");
substr, substring截取字符.
-
截取从指定索引处后面所有字符,包括指定的哪个字符。注意,索引从1开始
SELECT SUBSTR('张三丰与郭襄', -2); #郭襄 SELECT SUBSTR('张三丰与郭襄', 5); #郭襄
-
截取从指定索引处指定字符长度的字符
SELECT SUBSTR('张三丰与郭襄', 1, 3);
instr:返回子串第一次出现的索引,如果找不到就返回0
SELECT INSTR('张三丰与郭襄', '郭襄'); #5,郭襄对应张三丰与郭襄中的索引是5
trim:
SELECT TRIM(" abc "); #去除字符串首尾的空格
SELECT TRIM('a' FROM "aaaaaaa aaaaa掌声aaaaaaaa "); # aaaaa掌声aaaaaaaa :去除字符串首尾的的a,不去除空格
SELECT TRIM('aa' FROM "aaaaaaaaaaa掌声aaaaaaaa "); #a掌声aaaaaaaa
lpad:用指定的字符填充实现左指定的长度,如果源字符串的长度大于指定的长度就截断
SELECT LPAD('智能', 10, '*');
SELECT LPAD('智能', 1, '*');
rpad:用指定的字符填充实现右指定的长度,如果源字符串的长度大于指定的长度就截断
SELECT RPAD('智能', 10, '*');
replace替换
SELECT REPLACE('你好啊,世界', '世界', '宇宙');
2、数学函数
round 四舍五入
SELECT ROUND(1.49); #1
SELECT ROUND(1.50); #2
SELECT ROUND(-1.5); #-2
SELECT ROUND(-1.6); #-2
SELECT ROUND(1.6); #2
SELECT ROUND(5.555, 2); # 5.56
ceil向上取整,返回>=该参数的最小整数
SELECT CEIL(-1.00); #-1
SELECT CEIL(-1.10); #-1
SELECT CEIL(1.00); #1
SELECT CEIL(1.10); #2
floor向下取整,返回<=该参数的最大整数
SELECT FLOOR(-1.00); #-1
SELECT FLOOR(-1.10); #-2
SELECT FLOOR(1.00); #1
SELECT FLOOR(1.10); #1
truncate 截取小数位数
SELECT TRUNCATE(1.6999, 1); #1.6
mod取余
SELECT MOD(10, 3); #1
SELECT MOD(10, -3); #1
SELECT MOD(-10, 3); #-1
其他函数
SELECT VERSION(); #mysql版本
SELECT DATABASE(); #当前使用的数据库名
SELECT USER(); #当前用户
流程控制函数
if函数:if-else
SELECT IF(1, "成立", "不成立");
case
-
用法1:类似switch
-
用法2:多重if
/*
case 要判断的字段或者表达式
when 常量1 then 显示1
when 常量2 then 显示2
…
else 显示n
end
*/SELECT uname, CASE uname WHEN 1 THEN '显示1' WHEN 6 THEN '显示6' ELSE '显示n' END AS 姓名 FROM userinfo;