SQL Server函数的使用
SQL 函数
一、 SQL Aggregate 函数(合计)
Aggregate: 函数计算从列中取得的值,返回一个单一的值。
函数:
- AVG() - 返回平均值
- COUNT() - 返回总行数
- Top 1 - 返回数据的第一行的值,要使用order by进行正序排序(只有MS Access支持FIRST()和LAST()函数)
- Top 1 - 返回数据的最后一行的值,要使用order by进行倒叙排序(LAST)
- MAX() - 返回最大值
- MIN() - 返回最小值
- SUM() - 返回总和SQL Scalar 函数
二、 SQL Scalar 函数(数量、标量)
Scalar 函数基于输入值,返回一个单一的值。
函数:
- UPPER() - 将某个字段转换为大写---(Mysql中使用UCASE())
- LOWER() - 将某个字段转换为小写---(Mysql中使用LCASE())
- LEFT(),RIGHT(),SubString() -从某个文本字段提取字符---(Mysql中使用MID())
- LEN() - 返回某个文本字段的长度(Mysql中使用LENGTH())
- ROUND() - 对某个数值字段进行指定小数位数的四舍五入-decimal()
- GETDATE() - 返回当前的系统日期和时间---(Mysql中使用NOW())
- COMVERT()-把日期转换为新数据类型的通用函数(Mysql中使用FORMAT() - 格式化某个字段的显示方式)
三、 函数例子
1.AVG() - 返回平均值(Average): SELECT AVG(column_ name) FROM table_name
查询a表中count列的平均值 SELECT AVG(count) AS CountAverage FROM a;
2.COUNT() - 返回总行数
1) COUNT(column_name)函数返回指定列的列数的总数(NULL不计入):
SELECT COUNT(column_name) FROM table_name;
2) COUNT(*) 函数返回表中的记录数:
SELECT COUNT(*) FROM table_name;
3) COUNT(DISTINCT column)函数返回指定列的不重复的总数:distinct去重
SELECT COUNT(DISTINCT column_name) FROM table_name;
COUNT(DISTINCT) 适用于 ORACLE 和 Microsoft SQL Server。
3. TOP 子句用于规定要返回的记录的数目。
percent百分比: SELECT TOP number|percent column_name(s) FROM table_name;
a表中百分之50的数据:select Top 50 percent * from a;
TOP 1 -返回指定的列中第一个数据(只有MS Access支持FIRST()和LAST()函数)
1) SQL Server: asc正序
SELECT TOP 1 column/* FROM table_name ORDER BY column_name ASC;
2) MYSQL:
SELECT column FROM table_name ORDER BY column_name ASC LIMIT 1;
3) ORACLE:
SELECT column FROM table ORDER BY column ASC WHERE ROWNUM <=1;
4) MS Access: SELECT FIRST(column_name) FROM table_name;
4.TOP 1 - 返回指定的列中最后一个记录的值
1) SQL Server: desc倒叙
SELECT TOP 1 column_name FROM table_name ORDER BY column_name DESC;
2) MYSQL:
SELECT column FROM table_name ORDER BY column_name DESC LIMIT 1;
3)ORACLE:
SELECT column FROM table ORDER BY column DESC WHERE ROWNUM <=1;
4)MS Access:
SELECT LAST(column_name) FROM table_name;
5.MAX() - 返回指定列的最大值 SELECT MAX(column_name) FROM table_name;
查询a表中count列的中最大的值:select MAX(count) from a;
6.MIN()- 函数返回指定列的最小值 SELECT MIN(column_name) FROM table_name;
查询a表中count列的中最小的值:select MIN(count) from a;
7.SUM() - 函数返回数值列的总数 SELECT SUM(column_name) FROM table_name;
查询a表中count列的中值得总数:select SUM(count) from a;
8.GROUP BY-用于结合聚合函数,根据一个或多个列对结果集进行分组
SELECT column_name, aggregate_function(column_name)
FROM table_name WHERE column_name operator value
GROUP BY column_name;
group by分组的字段=select查询的字段
1)查询表中姓名,根据姓名分组:
select Name from Tables group by Name;
2)查询姓名年龄和总成绩,根据姓名年龄分组:
select Name,Age,sum(Score) as '总数' from Tables group by Name,Age;
9.HAVING 子句可以筛选分组后的各组数据
增加 HAVING 子句原因是:WHERE 条件不能使用聚合函数
SELECT column_name,aggregate_function(column_name)
FROM table_name WHERE column_name operator value
GROUP BY column_name
HAVING aggregate_function(column_name) operator value;
10.EXISTS 运算符
· 用于判断查询子句是否有记录,如果有一条或多条记录存在返回 True,否则返回 False
SELECT column_name(s) FROM table_name
WHERE EXISTS(SELECT column_name FROM table_name WHERE condition);
11.UPPER() 函数把字段的值转换为大写
(1) SQL SERVER: upper
SELECT UPPER(column_name) FROM table_name;
(2) MYSQL: ucase
SELECT UCASE(column_name) FROM table_name;
12.LOWER() 函数把字段的值转换为小写
(1)SQL SERVER: lower
SELECT LOWER (column_name) FROM table_name;
(2)MYSQL: lcase
SELECT LCASE(column_name) FROM table_name;
13.left(),right(),substring() 函数用于从文本字段中提取字符
1) SQL SERVER:
left(string,length):
1 --返回从字符串左边开始指定个数的字符 2 select LEFT('SqlServer_2008',3); --返回Sql
right(string,length):
1 --返回从字符串右边开始指定个数的字符 2 select RIGHT('SqlServer_2008',4);---2008
substring(character,start,length):
1 --返回从字符串中间的字符 2 select SUBSTRING('SqlServer_2008',4,6);---server
2) MYSQL: MID()
SELECT MID(column_name,start,length) FROM table_name;
1 --返回从字符串中间的字符 2 select MID('列名OR字符串',1,4);--- 列名OR
14.LEN() -函数返回文本字段中值的长度
1) SQL SERVER: len()
SELECT LEN(column_name) FROM table_ name;
2) MYSQL: length()
SELECT LENGTH(column_name) FROM table_name;
15.ROUND() 函数用于把数值字段四舍五入为指定的小数位数
1) ROUND (数据OR字段, 小数后几位, 截断) 截断默认是0
SELECT ROUND(column_name,decimals) FROM table_name;
2) decimal():小数,十进制 cast(数据as decimal(,))
SELECT CAST(数据OR字段 as decimal(数据的位数, 小数后几位))
16. getdate() 获取当前系统的日期和时间
select getdate();
17.covert() 函数是把日期转换为新数据类型的通用函数。
CONVERT(data_type(length),expression,style)
convert(数据类型(长度),getdate(),格式)