第十章 计算字段
10.1 计算字段
一般存储在数据库中数据不是应用程序所需要的格式,例如
1. 不同表的列合并;
2. 需要恰当的字段格式,比如组织邮件打印;
3. 整理列数据,比如大小写转换;
我们需要从数据库中检索出转换、计算或格式化的数据;而不是检索出后,在客户机进行格式化。
10.2 拼接字段
举例说明,例如需要生成一直供应商报表,按照name(location)格式输出。
解决办法就是,使用Concat()
函数来拼接两列。多数DBMS使用+
、=
进行拼接,而MySQL使用concat()
拼接。
mysql> SELECT Concat(vend_name, ' (', vend_country, ')') FROM vendors ORDER BY vend_name;
+--------------------------------------------+
| Concat(vend_name, ' (', vend_country, ')') |
+--------------------------------------------+
| ACME (USA) |
| Anvils R Us (USA) |
| Furball Inc. (USA) |
| Jet Set (England) |
| Jouets Et Ours (France) |
| LT Supplies (USA) |
+--------------------------------------------+
- 同时,可以通过删除数据右侧多余的空格来整理数据,使用
RTrim()
函数; - 使用别名,利用
AS
关键字。
mysql> SELECT Concat(vend_name, ' (', vend_country, ')') AS vend_title FROM vendors ORDER BY vend_name;
+-------------------------+
| vend_title |
+-------------------------+
| ACME (USA) |
| Anvils R Us (USA) |
| Furball Inc. (USA) |
| Jet Set (England) |
| Jouets Et Ours (France) |
| LT Supplies (USA) |
+-------------------------+
10.3 执行算术计算
例子,汇总物品的价格
mysql> SELECT prod_id, quantity, item_price, quantity*item_price AS expanded_price FROM orderitems WHERE order_num = 20005;
+---------+----------+------------+----------------+
| prod_id | quantity | item_price | expanded_price |
+---------+----------+------------+----------------+
| ANV01 | 10 | 5.99 | 59.90 |
| ANV02 | 3 | 9.99 | 29.97 |
| TNT2 | 5 | 10.00 | 50.00 |
| FB | 1 | 10.00 | 10.00 |
+---------+----------+------------+----------------+