1.字符函数
①length().获取参数的字节个数(字符的实际长度)
SELECT LENGTH('张三abc');----->9
一个汉字算三个字节,一个数字或字母算一个字节。
②char_length(),获取参数的字符个数
SELECT CHAR_LENGTH('张三abc');----->5
不论汉字、数字、字母都算一个字符
③concat() 拼接字符串
group_concat() 聚合拼接
④upper() lower() 转换大小写
⑤substr() substring() 在mysql两个函数一样的,但在java中这两个函数意思不一样。
注意:mysql中索引都是从1开始的。
常用的两个函数:1.从索引位置开始一直截取到最后 2.从索引位置开始截取指定的长度
⑥left()、right()函数 和截取差不多,返回指定长度的最左边或者最右边的字符
SELECT LEFT('abcde12345',5); -----abcde
⑦SUBSTRING_INDEX(str,delim,count)函数 分割字符返回指定索引处之前或者之后的字符
SELECT SUBSTRING_INDEX('www.baidu.com','.',2);---------www.baidu
SELECT SUBSTRING_INDEX('www.baidu.com','.',-2);---------baidu.com
如果找不到指定的分隔符,则会返回整个串。
⑧instr(s1,s2) 返回s2子串在s1串中的索引位置,如果没有返回0,如果多个,返回第一次出现的索引位置
SELECT INSTR('www.com.baidu.com.com','com');----5
⑨trim() 函数,去掉前后空格(大家都知道,java也有这个函数),也可以去掉前后指定的字符
SELECT TRIM('aa' FROM 'aaaaa哈哈a哈aaa');-------a哈哈a哈a
⑩lpad() 用指定的字符实现左填充指定的长度
SELECT LPAD('张三',5,'*');---------***张三,
注意:返回的字符(不是字节)长度为5,如果不够,则用*填充,如果超过,则截取最左边的5个长度的字符串
SELECT LPAD('张三是个聪明人',5,'*');------张三是个聪
同理rpad() 右填充,用法类似。
⑾replace(str,from_str,to_str) 替换,如果出现多个,全部替换
SELECT REPLACE('张三想打李四','张三','王五');------- 王五想打李四
⑿FIND_IN_SET(str,strlist) 和like差不多,只是like为模糊匹配,find_in_set为精确匹配,以英文,分割
SELECT FIND_IN_SET('b','a,b,c,d');--------2,我个人还是比较常用这个函数
2.数学函数
①round 四舍五入,默认四舍五入取整,重载函数第二个参数确定小数点后几位四舍五入
SELECT ROUND(1.2453,2);-----1.25
②ceil 向上取整,返回大于等于该参数的最小整数
SELECT CEIL(1.25);----2 SELECT CEIL(1.00);------1
③floor 向下取整 ,返回小于等于改参数的最大整数
SELECT FLOOR(1.332); ------ 1 SELECT FLOOR(1.00); ----1
④TRUNCATE 截断 指定小数点后几位
SELECT TRUNCATE(1.323232,2);----1.32 取两位
⑤ mod 取余
SELECT MOD(-10,-3);-----(-1)
注意:至于结果是负数还是整数,要么就看第一个是负数还是整数,那么结果就是负数或者整数
公式:取余的结果公式为 mod(a,b)=a-a/b*b