熟练掌握SQL函数,我准备好了!!!

前言:

由于我安装的sql server是2005版的,部分内置函数不支持,所以分成两篇文章,上篇用来展示2005版支持的函数,本篇展示剩余部分函数。参考样例来自于: https://www.w3school.com.cn/sql/sql_functions.asp.
万分感谢,直接进入正题了。

1.first()和last()

FIRST() 函数返回指定的字段中第一个记录的值。LAST() 函数返回指定的字段中最后一个记录的值。可使用 ORDER BY 语句对记录进行排序。语法:SELECT FIRST(或LAST)(column_name) FROM table_name。就举一个first的例子,我们拥有下面这个 “Orders” 表:
在这里插入图片描述
现在,我们希望查找 “OrderPrice” 列的第一个值。

SELECT FIRST(OrderPrice) AS FirstOrderPrice FROM Orders

结果集类似这样:
在这里插入图片描述

2.ucase()和lcase()

UCASE 函数把字段的值转换为大写。LCASE 函数把字段的值转换为小写。语法:SELECT UCASE(column_name) FROM table_name。就举一个ucase的例子,我们拥有下面这个 “Persons” 表:
在这里插入图片描述
现在,我们希望选取 “LastName” 和 “FirstName” 列的内容,然后把 “LastName” 列转换为大写。

SELECT UCASE(LastName) as LastName,FirstName FROM Persons

结果集类似这样:
在这里插入图片描述

3.mid()

MID 函数用于从文本字段中提取字符。语法:SELECT MID(column_name,start[,length]) FROM table_name。在这里插入图片描述
举个例子:我们拥有下面这个 “Persons” 表:
在这里插入图片描述
现在,我们希望从 “City” 列中提取前 3 个字符。

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

结果集类似这样:
在这里插入图片描述

4.now()

NOW 函数返回当前的日期和时间。提示:如果您在使用 Sql Server 数据库,请使用 getdate() 函数来获得当前的日期时间。语法:SELECT NOW() FROM table_name。举个例子:我们拥有下面这个 “Products” 表:
在这里插入图片描述
现在,我们希望显示当天的日期所对应的名称和价格。

SELECT ProductName, UnitPrice, Now() as PerDate FROM Products

结果集类似这样:
在这里插入图片描述

5.format()

FORMAT 函数用于对字段的显示进行格式化。语法:SELECT FORMAT(column_name,format) FROM table_name。
在这里插入图片描述
举个例子:我们拥有下面这个 “Products” 表:
在这里插入图片描述
现在,我们希望显示每天日期所对应的名称和价格(日期的显示格式是 “YYYY-MM-DD”)。

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

结果集类似这样:
在这里插入图片描述

6.group by

合计函数 (比如 SUM) 常常需要添加 GROUP BY 语句。GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组。语法:
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
举个例子:我们拥有下面这个 “Orders” 表:
在这里插入图片描述
现在,我们希望查找每个客户的总金额(总订单)。我们想要使用 GROUP BY 语句对客户进行组合。

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

结果集类似这样:
在这里插入图片描述
很棒吧,对不对?让我们看一下如果省略 GROUP BY 会出现什么情况:

SELECT Customer,SUM(OrderPrice) FROM Orders

结果集类似这样:
在这里插入图片描述
上面的结果集不是我们需要的。

那么为什么不能使用上面这条 SELECT 语句呢?解释如下:上面的 SELECT 语句指定了两列(Customer 和SUM(OrderPrice))。“SUM(OrderPrice)” 返回一个单独的值(“OrderPrice” 列的总计),而 “Customer” 返回 6 个值(每个值对应 “Orders” 表中的每一行)。因此,我们得不到正确的结果。不过,您已经看到了,GROUP BY 语句解决了这个问题。

我们也可以对一个以上的列应用 GROUP BY 语句,就像这样:

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

在 SQL 中增加 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
距离如下:我们拥有下面这个 “Orders” 表:
在这里插入图片描述
现在,我们希望查找订单总金额少于 2000 的客户。

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

结果集类似:
在这里插入图片描述
现在我们希望查找客户 “Bush” 或 “Adams” 拥有超过 1500 的订单总金额。

我们在 SQL 语句中增加了一个普通的 WHERE 子句:

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

结果集:
在这里插入图片描述

后记

怎么说?Could you spare me a song?人与人之间,总有邂逅;心与心之间,总会生情。感情,没有模板,只要感到心暖;相处,没有形式,全凭轻松自然。只要,说出的话,有人愿意听,就是温暖;只要,心里的事,有人愿意懂,就是真情。最深的爱,总是风雨兼程;最浓的情,总是冷暖与共;最懂的人,才是最暖的伴。
在这里插入图片描述

发布了46 篇原创文章 · 获赞 237 · 访问量 6082

猜你喜欢

转载自blog.csdn.net/weixin_43912621/article/details/105031763
今日推荐