本文将会介绍有关于计算字段的一些定义和使用方法。
计算字段
首先举几个例子了解一下在什么场景下可能会用到计算字段
- �需要显示公司名,同时还需要显示公司的地址,但这两个信息储存在不同的列中。
- 列数据是大小写混合的,但报表程序需要把所有数据按大写表示出来。
- 需要根据数据进行诸如总数、平均数的计算。
在上述例子中,数据库表中的数据都不能直接拿给客户端应用使用,这时就需要对检索出的数据进行转换、计算或者是格式化,来满足客户端应用的需求,也就是创建计算字段。简单的说,计算字段就是对数据库原有字段进行一些简单操作后得出的字段。需要注意的是,计算字段 并不 实际存在于数据库表中,计算字段是运行时在SELECT语句内创建的,并且计算字段的数据与其他列的数据返回方式相同。
有许多数据的转换和格式化工作都可以在数据库服务器中通过SQL语句完成,并且效率要比在客户端应用中完成要高得多。
接下来看使用计算字段的几个实际方法
拼接字段
Vendors表包含供应商名和地址信息。假如要生成一个供应商报表,需要在格式化的名称中列出供应商的位置,相当于是将两个字段合并为一个字段返回,那么需要怎么操作呢?
可以将这两个字段拼接起来。根据使用的DBMS不同,实现这个结果的方法也有所不同,在有些DBMS中,使用特殊的操作符就可以实现,在MySQL中,需要使用 Concat 这个特殊的函数,下面看一下如何使用这个函数:
SELECT Concat(vend_name , ' (', vend_country, ')')
FROM Vendors
ORDER BY vend_name;
�先看一下输出的结果:
可以看到,输出的结果的格式和我们在Concat函数中所写的格式一致。
通过这个例子,可以总结出Concat函数的参数的格式,那就是多个参数之间用逗号隔开,同时自己所添加的内容需要用引号包起来,里面的内容由自己定义。SELECT语句将会返回�Concat函数所得到的结果。
�使用别名
通过观察上一个例子的输出结果,会发现输出结果的列名是Concat函数的内容,这样的列名无法在客户端应用中使用。为了解决这个问题,SQL支持 别列名 即 别名。别名(alias)是一个字段或者值的替换名。别名用 AS 关键字赋予。下面看一个例子:
SELECT Concat(vend_name , ' (', vend_country, ')') AS vand_title
FROM Vendors
ORDER BY vend_name;
�下面是�输出结果:
可以看到,输出结果的列名已经变成了vend_title,现在任意的客户端应用都可以引用这个列,就像实际存在的列一样。
关于别名的名字,还有一点需要注意。别名的名字既可以是一个单词,也可以是一个字符串。虽然使用字符串作为别名的名字有较高的可读性,但是可能会给客户端应用带来一些无法预料的问题,所以别名的名字最好是使用一个最具代表性的单词。
执行算数计算
计算字段的另一个常见用途是对检索出的数据进行算术计算,比如下面这个例子,这个例子将会对订单中每项物品进行价格汇总:
SELECT prod_id, quantity, item_price,
quantity * item_price AS expanded_price
FROM OrderItems
WHERE order_num = 20008;
输出结果:
输出中显示的expanded_price列是一个计算字段,客户端应用可以直接使用这个列。
SQL支持以下的基本算数操作符,使用圆括号可以区分优先级:
- 加 +
- 减 -
- 乘 *
- 除 /
以上就是本文介绍的内容,下篇文章将会介绍SQL中如何使用函数处理数据。