软件测试人员在工作中,用到函数的时候还是偏少的,有时会统计生成了多少条数据,又或者根据业务的情况需要计算用户的余额总和,这时就需要用到函数。
函数格式:
FUNCTION(列名称|字符串,[参数1,参数2])
FUNCTION---函数名称
列名称:表示表的字段列名称
字符串:表示其它字符串
参数:根据函数不同,有不同的参数
单行函数
也就是标量函数
(1)UCASE()---将小写字母转换成大写字母
格式:UCASE(列名称|str)
1.转换STR
SELECT ucase('test');
==SELECT upper('test');
2.转换列名称
SELECT ucase(name) FROM class;
注意:函数里面的字符串都要用引号括起来,列名称不需要
(2)将大写字母转换成小写字母
格式:LCASE(列名称|STR)
1.转换字符串
SELECT lcase('TESTEWERQWE');
查询结果为:testewerqwe
2.转换列名称
SELECT lcase(ename) FROM emp;
==SELECT lower(ename) FROM emp;
(3)MID()---截取字符串
格式:MID(列名称|str,x,y)
str---字符串
x---表示从x位开始截取
y---表示截取y个字符
1.截取字符串
SELECT mid('abcdef',3,2);
查询结果为:cd
2.可以省略参数y
SELECT mid('abcdef',3);
查询结果为:cdef
从字符串第3位截取,一直到最后一个字符
3.截取列名称
SELECT mid(ename,2,3) FROM emp;
4.从class表中将name字段从第二位开始截取所有字符串,然后将截取的字符串转换成小写(lower)
SELECT lower(mid(ename,2)) FROM class;
注意:这就是嵌套函数
(4)LENGTH() ----返回某个文本域(字符串或列名称)的长度
格式:LENGTH(列名称|字符串)
1.查询字符串的长度
SELECT length('asdfasdfasd');
查询结果为:11
2.查询class表中name的长度
SELECT length(ename) FROM class;
3.查询出class表name字段最后三位字符串
SELECT mid(name,length(name)-2) FROM class;
==SELECT mid(name,-3) FROM class;
(5)ROUND() ----对某个数值进行四舍五入
格式:ROUNT(列|数值,位数)
如果有位数,则表示数值保留多少位小数
如果没有,取整
1.对数值
SELECT round(3234234.23423,1);
查询结果为:3234234.2
SELECT round(3234234.25423,1);
查询结果为:3234234.3
2.要数值 123.568789保留3位小数
SELECT ROUND(123.568789,3);
3.省略参数(位数)
SELECT ROUND(13.56);
注意:省略参数就是取整
4.列名称
SELECT round(score,1) FROM score;
(6)REPLACE() --替换字符串的字符
格式:REPLACE(str,x,y)
将str中x替换成y
1.替换字符串
SELECT REPLACE('adasfcdasdsdafasd','d','12');
查询结果为:a12asfc12as12s12afas12
合集函数
也称为组函数
COUNT():求表的列数
MAX():求最大值
MIN():求最小值
AVG():求平均
SUM():求和
(1)求出class表中总的行数
SELECT count(*) FROM class;
(2)求出class表中学生的个数
SELECT count(name) FROM class;
(3)求班级的个数
SELECT count(distinct class) FROM class;
注意:COUNT(*):求表中的行数
COUNT(列名称):求表中该列的行数,不包含null值
COUNT(DISTINCT 列名称):求表中该列去重后的个数
(4)求出score表中学生的最高分数
SELECT max(score) FROM score;
(5)求出score表中分数最高的学号和课程号
SELECT xuehao,scno
FROM score
WHERE score = (SELECT max(score) FROM score);
(6)求出score表中最低分数是多少
SELECT min(score) FROM score;
(7)求出分数表中最高分数和最低分数分别是多少
SELECT max(score),min(score) FROM score;
(8)在7的基础上,分别命别名为最高分数和最低分数,且取整
SELECT round(max(score)) 最高分数,round(min(score)) 最低分数 FROM score;
(9)求出score表中学生的平均分数,并保留二位小数
SELECT round(avg(score),2) 平均分数 FROM score;
(10)求score表中课程号为3-110的平均分数,最高分数,最低分数
SELECT avg(score) 平均分数,max(score) 最高分数,min(score) 最低分数
FROM score
WHERE scno = “3-110";
(11)求出score表中所有学生的分数总和
SELECT sum(score) FROM score;
(12)求出score表中课程号为3-110的分数且大于课程号为1-141的最高分数的学生学号
SELECT xuehao FROM score
WHERE scno = "3-110" AND
score > (SELECT max(score) FROM score WHERE scno = “1-141");
特别推荐SQL系列: