主要介绍什么是计算字段
计算字段
如果存在数据库中的数据不是应用程序需要的格式,那么需要计算字段。例如:
需要显示公司名,但是还需要显示公司地址,但是这两个信息存储在不同的表列中。
列数据是大小写混合的,但是报表程序需要把所有数据按大写表示
这种情况,需要直接从数据库中检索出转换、计算、格式化后的数据,而不是直接检索数据。
字段
基本上与列相同,只有数据库知道SELECT哪些语句是列,哪些语句是计算字段。
拼接字段(concatenate)
如果需要在名称中显示位置,但是SELECT中只有名称,那么就需要用到+操作符。例如
SELECT vend_name +'(' + vend_country+')'
FROM venders
ORDER BY vend_name;
输出结果是名字后面跟着国家,但是后面会跟着空格,实际上不需要空格,这是可以使用SQL的RTRIM()函数完成,例如:
SELECT RTRIM(vend_name) +'(' + RTRIM(vend_country)+')'
FROM venders
ORDER BY vend_name;
实际上,RTRIM是去掉右空格,还有LTRIM(去掉左空格)和TRIM(去掉两边空格)。
但是,如果使用拼接字段,输出的是一个未命名的列,一个未命名的列是不能存在客户端中的,为了解决这个问题,可以使用AS(别名关键词)。
SELECT RTRIM(vend_name) +'(' + RTRIM(vend_country)+')'
AS vend_title
FROM venders
ORDER BY vend_name;
这样输出的就是vend_title的新命名的列。
AS关键词通常是可选的,但是笔者建议最好加上。
执行算术计算
计算字段的另一个常见用途是对检索出的数据进行数学计算。
举个例子,Orders表中包含收到的订单,Orderitems表包含订单的各项物品,下面的SQL语句检索订单号2008的所有物品
SELECT prod_id,quantity,item_price
FROM Orderitems
WHERE order_num=2008;
item_price指每项物品的单价,要汇总物品的总价,需要将数量quantity乘item_price
例如:
SELECT prod_id,quantity,item_price
quantity*item_price AS expanded_price
FROM Orderitems
WHERE order_num=2008;
这里新建了一个别名expanded_price计算总价。
SQL操作符
+ | 加 |
- | 减 |
* | 乘 |
/ | 除 |