在百度经验里面发现了和我想写的东西差不多的文章,转载过来,后续再更新自己的 → 百度经验原文
本篇主要介绍MySQL自带的各种系统函数
字符串函数
-
1
concat():字符串连接;
concat_ws():使用指定的分隔符进行连接。
例子:
SELECT concat("my","_","sql") AS new_col;
SELECT concat_ws("_","my","sql") as new_col;
从下面的连接结果可以看出,concat("my","_","sql") 和concat_ws("_","my","sql")是等价的。
-
2
format():数字格式化。四舍五入,保留小数位数。
SELECT format(12344.29,1);
SELECT format(12344.24,1);
两个的结果如下:
-
3
lower():字符串转小写
SELECT lower("HELLO worLD") AS new_col;
upper():字符串转大写
SELECT upper("HELLO worLD") AS new_col;
-
4
left():获取左侧字符串;
SELECT LEFT("mysql",2) AS new_col;
right():获取右侧字符串;
SELECT right("mysql",3) AS new_col;
注:MySQL是从顺序1 开始
-
5
length() 获取字符串的长度
我们先来看非中文的字符串长度
SELECT length("mysql") as new_col;
-
6
我们再来看下中文字符串的长度,在MySQL 下我试验过,一个中文字符占三个字节:
SELECT length('我的哈哈')AS new_col;
utf8 下长度如下:
-
7
gbk 下其长度如下:
注:修改编码语句:
alter database db_name character set gb2312;
-
8
substring()截取一定长度的字符串
分为两种形式
SELECT substring("mysql",1,2) as new_col;
如果第三个参数为空,那么将截取至字符串最后一位
SELECT substring("mysql",3) as new_col;
-
9
ltrim()删除前导空格
rtrim()删除后导空格
trim()删除空格
这几个比较简单,就不一一举例了。
-
10
SUBSTRING_INDEX(字段,分隔符,数组的索引)
该方法主要处理以分隔符进行连接的字段,类似c# 里面的split()方法,将字段按照分隔符分割成数组,第三个参数就是你想要返回数组的第几个值,MySQL是从1 开始计算数组的。
END
数值运算符和函数
-
1
ceil() 向上取整:
SELECT ceil(3.2) =4;
floor()向下取整:
SELECT floor(3.6) =3;
round()四舍五入:
SELECT round(3.6) =4;
SELECT round(3.2) =3;
div 整数除法 :
SELECT 3 div 4 =0;
SELECT 4 div 3 =1;
mod 取余数 :
SELECT 3 mod 4 =3;
SELECT 4 mod 3 =1;
power() 幂运算:
SELECT power(3,2)=9;
END
日期时间函数
-
1
now() 当前日期和时间
curdate() 当前日期
curtime()当前时间
date_add() 日期变化:
SELECT DATE_ADD(CURDATE(),INTERVAL 1 DAY);
SELECT DATE_ADD(CURDATE(),INTERVAL -1 MONTH);
datediff() 日期差值计算:
SELECT DATEDIFF(CURDATE(),"2017-08-08")
date_format()日期格式化:
SELECT DATE_FORMAT(now(),"%Y年%m月%d日");
2017年08月18日
END
信息函数
-
1
connection_id()连接id
datebase()当前数据库
last_insert_id()最后插入记录id号,若写入多条,则返回第一条记录的id
user()当前用户
version()版本信息
END
聚合函数
-
1
聚合函数(只有一个返回值)
avg()平均数
count()计数
max()最大值
min()最小值
sum()求和
END
加密函数
-
1
md5()信息摘要算法
password()密码算法