1、字符串处理函数:
char_length('a中'); -- 返回字符长度
length('a中'); -- 返回字节长度
concat('abc',' ','def'); --返回括号内字符链接后的字符,返回:abc def
concat_ws(';', 'aedfad','sdfadfd','sfadfs'); -- 第一个参数为后面字符串链接时的分隔符
instr('asdfghjkl', 'fgh'); -- 子串的起始位置。返回后面字符串在前面字符串中查找到的位置。返回0,则表示没有找到
locate('abc', 'asdasabcdfdfd', 5); --作用和instr一样,就是参数颠倒一下,而且最后一个参数可以指定开始查找的位置
insert(‘dsfadfsdfasdfsfesf’,2,11,'-----'); -- 从第2个位置开始,往后的11个字符,使用'-----'进行替换
lower('ADDEsdfsf'); -- 全部大写变小写
upper('dsfdfaDD'); -- 全部小写变大写
left('DFDFDGfrr', 3); --取左侧3个字符
right('DFDFDGfrr', 3); --取右侧3个字符
lpad('abc',8,'*'); -- 在左边使用*补足8位字符
rpad('abc',8,'*'); -- 在右边使用*补足8位字符
trim(' dfad dafdf ') -- 去除两端空白字符
substring('sfsdfadg',4,7); -- 取从第4个位置开始的7个字符,如果不设置最后一个参数,则表示取第4个位置开始的后面所有字符
repeat('adfadfadf',3) -- 第一个参数的字符串,重复链接3遍
REPLACE('Hello MySql','My','Your') - 子串替换
REVERSE('Hello') - 翻转字符串
SPACE(10) - 返回10个空格
2、数字处理函数:
floor(3.94) - 舍掉小数,向下取整
ceil(3.94) - 舍掉小数,向上取整
format(391.536, 2) - 数字格式化为字符串,###,###.###,四舍五入,第二个参数为小数位数
round(673.4974) - 四舍五入
round(673.4974, 2) - 四舍五入到小数点后两位
round(673.4974, -2) - 四舍五入到百
TRUNCATE(234,31, 1) - 舍去至小数点后1位,是直接舍弃,不取上或者取下
3、日期处理函数
NOW() 返回当前的日期和时间
CURDATE() 返回当前的日期
CURTIME() 返回当前的时间
DATE(时间) 提取日期或日期/时间表达式的日期部分
TIME(时间) 提取日期或日期/时间表达式的时间部分
EXTRACT(字段 From 日期) 返回日期/时间按的单独部分
字段的合法值:
MICROSECOND
SECOND
MINUTE
HOUR
DAY
WEEK
MONTH
QUARTER
YEAR
SECOND_MICROSECOND
MINUTE_MICROSECOND
MINUTE_SECOND
HOUR_MICROSECOND
HOUR_SECOND
HOUR_MINUTE
DAY_MICROSECOND
DAY_SECOND
DAY_MINUTE
DAY_HOUR
YEAR_MONTH
DATE_ADD(日期, INTERVAL 数量 字段) 给日期添加指定的时间间隔
字段的合法值同上
DATE_SUB(日期, INTERVAL 数量 字段) 从日期减去指定的时间间隔
DATEDIFF(日期1, 日期2) 返回两个日期之间的天数
DATE_FORMAT(日期, 格式) 用不同的格式显示日期/时间
格式字符: %Y-%m-%d %H:%i:%s
%d/%m/%Y
%Y年%m月%d日
%a 缩写星期名
%b 缩写月名
%c 月,数值
%D 带有英文前缀的月中的天
%d 月的天,数值(00-31)
%e 月的天,数值(0-31)
%f 微秒
%H 小时 (00-23)
%h 小时 (01-12)
%I 小时 (01-12)
%i 分钟,数值(00-59)
%j 年的天 (001-366)
%k 小时 (0-23)
%l 小时 (1-12)
%M 月名
%m 月,数值(00-12)
%p AM 或 PM
%r 时间,12-小时(hh:mm:ss AM 或 PM)
%S 秒(00-59)
%s 秒(00-59)
%T 时间, 24-小时 (hh:mm:ss)
%U 周 (00-53) 星期日是一周的第一天
%u 周 (00-53) 星期一是一周的第一天
%V 周 (01-53) 星期日是一周的第一天,与 %X 使用
%v 周 (01-53) 星期一是一周的第一天,与 %x 使用
%W 星期名
%w 周的天 (0=星期日, 6=星期六)
%X 年,其中的星期日是周的第一天,4 位,与 %V 使用
%x 年,其中的星期一是周的第一天,4 位,与 %v 使用
%Y 年,4 位
%y 年,2 位
LAST_DAY(日期) - 返回当月最后一天
4、NULL 相关
IFNULL(数据1,数据2) - 数据1是null返回数据2;不是null返回数据1
coalesce(数据1,数据2,......) - 返回从左向右第一个不是null的数据
5、加密
md5('dsfdfsd') -- 对明文进行加密,都是不可逆的加密方式
sha(asdfgh'') -- 对明文进行加密,都是不可逆的加密方式
5、多行函数
=============================================
* 多行数据交给函数处理,产生一个计算结果
count() 计数,数量,会忽略null值的行
*)计算行select count(1) form tb_test;
max() 最大值
min() 自小值
avg() 平均,会忽略null值的行
sum() 求合
* 不能直接与普通字段一起查询
group by:按照分组进行查询, 后面没有跟的字段,不能出现在select后面
*)只能用在多行查询后面使用
例子:select department_id, count(1) from employees group by department_id; --按照department_id进行分组统计数目
having子句:
*)多行函数分组计算,对多行函数结果进行过滤,不能用where,而使用having来过滤,前面必须有group by
例如:select department_id, count(1) c from employees group by department_id having c=1; -- -按照department_id进行分组统计数目为1的结果