计算字段
- 计算字段:直接从数据库中检索出转换、计算或格式化过的数据;计算字段并不实际存在于数据库表中,而是运行时在SELEC语句内创建的。
- 字段(field):基本上与列(column)的意思相同,经常互换使用,不过数据库的列一般还是称为列,而字段则常用在计算字段的连接上。
1. 拼接字段
- 拼接(concatenate):将若干个值连结到一起构成单个值
- Concat()函数:在MySQL的SELECT语句中,使用Concat()函数来完成两个列的拼接。
- 注意:多数DBMS使用+或||来实现拼接,但MySQL则是使用Concat()函数来实现。
- Trim()函数:用于去除值中的空格;
- Trim():去掉串左右两边的空格
- RTrim():去掉串右边的空格
- LTrim():去掉串左边的空格
/*
vendors表包含供应商名和位置信息。
假如要生成一个供应商报表,
需要在供应商的名字中按照name(location)这样的格式列出供应商的位
置。
*/
SELECT Concat(Trim(vend_name),'(',Trim(vend_country),')')
FROM vendors
ORDER BY vend_name;
+----------------------------------------------------+
| Concat(Trim(vend_name),'(',Trim(vend_country),')') |
+----------------------------------------------------+
| ACME(USA) |
| Anvils R Us(USA) |
| Furball Inc.(USA) |
| Jet Set(England) |
| Jouets Et Ours(France) |
| LT Supplies(USA) |
+----------------------------------------------------+
- 别名(alias):一个字段或值的替换名,使用AS关键字赋予。
- 别名常见用途:在实际的表列名包含不符合规定的字符(如空格)时重新命名它,在原来的名字容易误解时扩充它等等;
- 上文语句拼接后列未命名,客户机无法引用它,但创建别名后任何客户机应用都可以按名字引用这个列,就像是一个实际的表列一样。
- 导出列(derived column):别名有时候也称为导出列
2. 执行算术计算
- MySQL算术操作符(+ - * /)
- 测试计算:通过省略FROM子句,可以简单地访问和处理表达式;例如
SELECT 3*2;
将返回6,SELECT Trim('abc ');
将返回abc,而SELECT Now()
则利用Now()函数返回当前日期和时间。
# 检索订单号20005中的所有物品,并计算总价
SELECT prod_id,
quantity,
item_price,
quantity*item_price AS total_price
FROM orderitems
WHERE order_num = 20005;
+---------+----------+------------+-------------+
| prod_id | quantity | item_price | total_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 |
+---------+----------+------------+-------------+