SQL 函数

文本纯手打,表格例子出自W3网站中!

目录

合计函数(Aggregate functions)

 AVG()

COUNT()

FIRST()

LAST()

MAX() MIN()

sum()

Scalar函数

GROUP BY

HAVING

UCASE() LCASE()

MID()

LEN()

ROUND()

NOW()

FORMAT()

ALL()

ANY() SOME()



函数的语法是:

    SELECT function(列) FROM 表

函数类型:

  • Aggregate函数
  • Scalar函数

合计函数(Aggregate functions)

操作面向一系列的值,并返回一个单一的值

注释:如果在 SELECT 语句的项目列表中的众多其它表达式中使用 SELECT 语句,则这个 SELECT 必须使用 GROUP BY 语句!

函数描述
AVG(column)返回某列的平均值
BINARY_CHECKSUM 
CHECKSUM 
CHECKSUM_AGG 
COUNT(column)返回某列的行数(不包括NULL值)
COUNT(*)返回被选行数
COUNT(DISTINCT column)返回相异结果的数目
FIRST(column)返回在指定的域中第一个记录的值(SQLServer2000 不支持)
LAST(column)返回在指定的域中最后一个记录的值(SQLServer2000 不支持)
MAX(column)返回某列的最高值
MIN(column)返回某列的最低值
STDEV(column) 
STDEVP(column) 
SUM(column)返回某列的总和
VAR(column) 
VARP(column)

 AVG()

返回数值列的平均值。NULL值不包括在计算之内。

SELECT AVG(column_name) FROM table_name

例子:

SELECT Customer FROM Orders WHERE OrderPrice>(SELECT AVG(OrderPrice) FROM Orders)

查找高于平均值的数据

COUNT()

COUNT(column_name) 函数返回指定列的值得数目(NULL不计入)

SELECT COUNT(column_name) FROM table_name

COUNT(*)函数返回表中的记录数

SELECT COUNT(*) FROM table_name

COUNT(DISTINCT column_name)函数返回指定列的不同值的数目:

SELECT COUNT(DISTINCT column_name) FROM table_name

FIRST()

first()函数返回指定的字段第一个记录的值。(可以使用ORDER BY语句对记录进行排序)

SELECT FIRST(OrderPrice) AS FirstOrderPrice FROM Orders

LAST()

使用方法和上面的FIRST()一样,不过是指定最后一个值返回。

MAX() MIN()

max()函数返回一列中的最大值,NULL值不在计算中。(MAX、MIN也可以用于文本列)

min()函数返回一列中最小值。

SELECT MAX(column_name) FROM table_name

sum()

返回数值列的总数(总额)

SELECT SUM(column_name) FROM table_name

Scalar函数

操作面向单一的值,并返回基于输入值得一个单一的值

GROUP BY

用于结合合计函数,根据一个或者多个列对结果进行分组

SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name

他也可以用于一个以上的列

SELECT Customer,OrderDate,SUM(OrderPrice) FROM Orders
GROUP BY Customer,OrderDate

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

例子:

SELECT Customer,SUM(OrderPrice) FROM Orders
GROUP BY Customer
HAVING SUM(OrderPrice)<2000

现在我们希望查找客户 "Bush" 或 "Adams" 拥有超过 1500 的订单总金额。

SELECT Customer,SUM(OrderPrice) FROM Orders
WHERE Customer='Bush' OR Customer='Adams'
GROUP BY Customer
HAVING SUM(OrderPrice)>1500

UCASE() LCASE()

把字段的值转换为大写/小写。

SELECT UCASE(column_name) FROM table_name
SELECT LCASE(column_name) FROM table_name

MID()

用于从文本字符中提取字符

SELECT MID(column_name,start[,length]) FROM table_name
参数描述
column_name必需。要提取字符的字段。
start必需。规定开始位置(起始值是 1)。
length可选。要返回的字符数。如果省略,则 MID() 函数返回剩余文本。

现在,我们希望从 "City" 列中提取前 3 个字符。

SELECT MID(City,1,3) as SmallCity FROM Persons

LEN()

返回文本字段中值的长度

SELECT LEN(column_name) FROM table_name

我们希望取得 "City" 列中值的长度。

SELECT LEN(City) as LengthOfCity FROM Persons
LengthOfCity
6
8
7

ROUND()

用于把数值字段舍入为指定的小数位数

SELECT ROUND(column_name,decimals) FROM table_name
参数描述
column_name必需。要舍入的字段。
decimals必需。规定要返回的小数位数。

现在,我们希望把名称和价格舍入为最接近的整数。

SELECT ProductName, ROUND(UnitPrice,0) as UnitPrice FROM Products
ProductNameUnitPrice
gold32
silver12
copper7

NOW()

返回当前的日期和时间(如果使用的是sql server数据库,使用getdate()来获取当前时间)

SELECT NOW() FROM table_name

FORMAT()

用于对字符的显示进行格式化

SELECT FORMAT(column_name,format) FROM table_name
参数描述
column_name必需。要格式化的字段。
format必需。规定格式。

例如:

SELECT ProductName, UnitPrice, FORMAT(Now(),'YYYY-MM-DD') as PerDate
FROM Products

ALL()

all 父查询中的结果集大于子查询中每一个结果集中的值,则为真。

用法:SELECT * FROM T2 WHERE N>ALL (SELECT N FROM T1)

ANY() SOME()

父查询中的结果集大于子查询中任意一个结果集中的值,则为真。

SELECT * FROM T2 WHERE N>ANY(SELECT N FROM T1)
SELECT * FROM T2 WHERE N>SOME(SELECT N FROM T1)

注:=any 与 子查询in相同

SELECT * FROM T2 WHERE N=ANY (SELECT N FROM T1)
SELECT * FROM T2 WHERE N IN (SELECT N FROM T1)

<>ANY 和 OR作用差不多:父查询中的结果集不等于子查询中的a或b或c,则为真。

NOT in 和 and作用差不多,父查询不等于子查询中任意一个结果集中的值,则为真。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值