SQL乐园(13):SQL语句中的函数简介

软件世界

  上期我们讲到用SELECT语句进行计算,在例子中我们用到了SUM()函数。函数的存在可以大大减少我们实现某项计算功能时所用的代码。

  常见函数

  虽然在SQL标准中没有多少函数的直接定义,不过在大多数的DBMS(数据库管理系统)中,都存在着一些常用的函数,下面做一个简单的介绍。有些函数是针对某个参数或者常数,有的函数是针对某个结果集中的所有记录。至于这些函数的详细用法,请参阅相关DBMS的技术说明书。

  常用数学函数见下表。

  常用的字符串函数和日期函数见下表。

  常用集合函数见下表。

  几个例子

  仍然以SQL Server 2000的Northwind数据库为例,要计算“Order Details”表OrderID=10255的订单的总金额,我们只须执行下面的语句:SELECT SUM(UnitPrice*Quantity) FROM "Order Details" WHERE OrderID=10255,其中引号""必须在英文状态下输入。

  要在 “Order Details”表中查询有多少订单订了ProductID=65的产品,只须执行下面的语句:SE LECT COUNT(*) FROM "Order Details" WHERE ProductID=65,其中“*”是通配符。朋友们会发现,使用“Order Details”表中的任何一个字段代替“*”,都可以得到相同的结果。

  下次我们讲讲这些函数的进阶应用。

  上期问题:按照Northwind数据库Products表中的订货量(UnitsOnOrder)和库存量(UnitsInStock)计算还要准备多少进货款。

  参考答案:SELECT SUM(UnitPrice * Unit sOnOrder- UnitPrice* UnitsInStock) FROM Prod ucts WHERE UnitsOnOrder !=0 AND Unit sOnOrder> UnitsInStock

  典型错误分析:很多读者的答案是:SELECT SUM(UnitPrice*(UnitsOnOrder-UnitsInStock)) FROM Products,上述语句没有考虑到UnitsOnOrder>U nitsInStock(库存有余)和UnitsOnOrder=0(没有订单)的情况,计算结果明显错误。

  本期问题:找出Northwind数据库Products表中价格(UnitPrice)的最大值、最小值和平均值。

  本期的幸运读者是广州的钟伟浩,他将获得《我形我塑影像制作全程图解》(含1CD)一本。请朋友们在答题的E-mail中注明通讯地址,以便邮寄奖品。