内置函数
先创建一个表,并添加如下信息
create table student1(
id char(1) primary key,
name varchar(8),
sex char(2) default '男' ,
age int(3) default 0
)
insert into student values ('1','王明','男',18);
insert into student values ('2','孙丽','女',17);
insert into student values ('3','王明','男',27);
insert into student (id,sex,age) values ('4','男',27);
多行函数
多行函数可以操作成组的多条数据,每组返回一个结果,所以多行函数又称之为组函数,常见的多行函数有
1,count(),计数
select count(age) from student1
输出结果为
2,max():求最大值
select max(age) from student1
3,min():求最小值
select min(age) from student1
输出结果为
4,avg():求平均数
select avg(age) from student1
输出结果为
5,sum():求和
select sum(age) from student1
输出结果为
注意:count、max和min组函数操作的数据的数据类型可以是char、varchar、int或date,但不能为clob;avg、sum仅能用在数字类型的数据上。
单行函数
单行函数仅对单条数据中的列进行操作并且返回一个结果,常见的单行函数有:
1,length(),返回字符长度。汉字代表3个字符,非汉字代表一个
select length(name) from student1
输出结果为
2,char_length() ,返回字符长度,一个汉字代表一个字符,非汉字也代表一个字符。
select char_length(name) from student1;
输出结果为
3,concat(), concat_ws(),都为拼接函数,将某几个字段在一列输出
select concat(id,',',name) from student1; #','是连接
输出结果为
对下边查询语句
select concat(id,',',name,',',sex) from student1;
有一种简便写法
select concat_ws(',',id,name,sex) from student1;
两者输出结果相同,如下
4, reverse() ;#字符反转函数
select reverse(name) from student1;
5,trim(),函数,去掉左右空格
先添加一条数据
insert into student1 values ('6',' 王明','男',27); #' 王明'中有空格
用如下语句查询
select trim(name) from student1; #trim()函数去掉两端空格
6,replace() 替换函数
select replace(name,'_','%') from student1;
7,substr(),截取字符串,下标从1开始,语法为(value,begin[,length])
select substr('ahjielw',2,3) from dual; #dual为MySQL中默认的表,2表示从第二个数开始,3表示截取三个字符
输出结果为
8,strcmp()函数,匹配字符串,匹配返回0
select name,strcmp(name,'孙丽') from student1;
9,mod(x,y),取余函数
select mod(1,3) from dual;
select mod(1,3) #from dual可以省
10, round(x,y)
round(x,y),四舍五入函数。返回参数x的四舍五入值,该值有y位小数;不指定第二个参数,则默认为0;
select round(1.58,0) from dual;
select round(1.58,1) from dual;
11, truncate(x,y)
返回数字x截断后的结果,该值有y位小数;
select truncate(1.58,0)
select truncate(1.58,1)
,
12,有关时间的函数
1) now():获得当前日期+时间
select now();
查询当前时间
2)date_format(date,format):获取指定格式的日期
select date_format(now(),'%Y-%m-%d') #得到年月日
3)datediff(date1,date2):返回(date1-date2)天;
select datediff(now(),'2019-05-02') #当前日期为5月10号
4)timediff(time1,time2):返回time1-time2,注意:函数的两个参数类型必须相同
select timediff(now(),'2019-01-14 00:00:00');
13,convert(value,type):将value转换为type类型, signed(整型)
select convert('111',signed)+111
14,
先添加一条数据
insert into student1 values('5',null,'女','17')
1)if(expr1,expr2,expr3): expr1为TRUE,返回expr2,否则返回expr3
select if(name is null,'未知',name) from student1;
2)ifnull(expr1,expr2):expr1不是NULL,返回expr1,否则返回expr2。
select ifnull(name,'未知') from student1 .