有的时候,存在表中的数据并不是应用程序所需要的。我们需要对直接从数据库中检索出来的结果进行转换、计算或者格式化。当然,这些可以在应用数据库的应用程序中进行,但是在数据库中进行这些操作比在应用程序中进行这些操作要快,所以这些操作最好在数据库中操作。
1、拼接字段concat
将返回的两列结果进行拼接返回。concat()将多个逗号隔开的字符串链接起来。
mysql> SELECT concat(vend_name,'(',vend_address,')') FROM vendors ORDER BY vend_name;
结果是:
+----------------------------------------+
| concat(vend_name,'(',vend_address,')') |
+----------------------------------------+
| ACME(555 High Street) |
| Anvils R Us(123 Main Street) |
| Furball Inc.(1000 5th Avenue) |
| Jet Set(42 Galaxy Road) |
| Jouets Et Ours(1 Rue Amusement) |
| LT Supplies(500 Park Street) |
+----------------------------------------+
6 rows in set (0.09 sec)
如果列中存放的数据左右含有空格,那么可以使用RTrim去除右侧空格,LTrim去除左侧空格,Trim去除两边空格。
2、列的别名
上例子中,返回结果的列名,比较长,可以通过制定列的别名来简化。
mysql> SELECT concat(vend_name,'(',vend_address,')') AS vendors FROM vendors ORDER BY vend_name;
返回结果是:
+---------------------------------+
| vendors |
+---------------------------------+
| ACME(555 High Street) |
| Anvils R Us(123 Main Street) |
| Furball Inc.(1000 5th Avenue) |
| Jet Set(42 Galaxy Road) |
| Jouets Et Ours(1 Rue Amusement) |
| LT Supplies(500 Park Street) |
+---------------------------------+
6 rows in set (0.00 sec)
3、计算字段
将检索出来的列进行算术运算。
比如,从订单表中,检索出每种商品的总价。
mysql> SELECT prod_id,quantity,item_price,quantity*item_price AS item_prices FROM orderitems ;
返回结果是:
+---------+----------+------------+-------------+
| prod_id | quantity | item_price | item_prices |
+---------+----------+------------+-------------+
| ANV01 | 10 | 5.99 | 59.90 |
| ANV02 | 3 | 9.99 | 29.97 |
| TNT2 | 5 | 10.00 | 50.00 |
| FB | 1 | 10.00 | 10.00 |
| JP2000 | 1 | 55.00 | 55.00 |
| TNT2 | 100 | 10.00 | 1000.00 |
| FC | 50 | 2.50 | 125.00 |
| FB | 1 | 10.00 | 10.00 |
| OL1 | 1 | 8.99 | 8.99 |
| SLING | 1 | 4.49 | 4.49 |
| ANV03 | 1 | 14.99 | 14.99 |
+---------+----------+------------+-------------+
11 rows in set (0.00 sec)
4、在列上应用函数
文本处理函数Upper(),Lower(),Trim(),Length(),Left(),Right(),Substring(),Locate()。
日期时间处理函数:AddDate(),AddTime(),CurDate(),CurTime(),Date(),Day(),Hour(),Minute(),Month(),Now(),Second(),Time(),Year()。
例如:
mysql> SELECT cust_id,order_num FROM orders WHERE Date(order_date) BETWEEN '2005-09-01' AND '2009-09-30';
返回结果:
+---------+-----------+
| cust_id | order_num |
+---------+-----------+
| 10001 | 20005 |
| 10003 | 20006 |
| 10004 | 20007 |
| 10005 | 20008 |
| 10001 | 20009 |
+---------+-----------+
5 rows in set (0.13 sec)
计算函数:Abs(),Mod(),Rand(),Exp()