SQL如何创建计算字段

拼接字段

拼接(concatenate) 将值联结到一起构成单个值。

在MySQL的SELECT语句中,可使用Concat()函数来拼接两个列

输入

SELECT Concat(vend_name, '(',vend_country,')')
FROM vendors
ORDER BY vend_name;
+-----------------------------------------+
| Concat(vend_name, '(',vend_country,')') |
+-----------------------------------------+
| Bear Emporium(USA)                      |
| Bears R Us(USA)                         |
| Doll House Inc.(USA)                    |
| Fun and Games(England)                  |
| Furball Inc.(USA)                       |
| Jouets et ours(France)                  |
+-----------------------------------------+

分析:Concat()拼接串,即把多个串连接起来形成一个串。Concat()需要一个或者多个指定的串,各个串之间用逗号分隔。

上面的SELECT语句连接以下4个元素。
 存储在vend_name列中的名字;
 包含一个空格和一个左圆括号的串;
 存储在vend_country列中的国家;
 包含一个右圆括号的串。

删除右侧多余空格

可以使用MySQL的RTrim()函数来完成。

输入

SELECT Concat(RTrim(vend_name), '(',vend_country,')')
FROM vendors
ORDER BY vend_name;
+------------------------------------------------+
| Concat(RTrim(vend_name), '(',vend_country,')') |
+------------------------------------------------+
| Bear Emporium(USA)                             |
| Bears R Us(USA)                                |
| Doll House Inc.(USA)                           |
| Fun and Games(England)                         |
| Furball Inc.(USA)                              |
| Jouets et ours(France)                         |
+------------------------------------------------+

分析:RTrim()函数去掉右边的所有空格。通过使用RTrim(),各个列进行了整理。

执行算术计算

计算字段的另一常见用途是对检索出的数据进行算术计算

orders表包含收到的所有订单,orderitems表包含每个订单中的各项物品。下面的SQL语句检索订单号20005中的所有物品:

输入

SELECT prod_id,quantity,item_price
FROM orderitems
WHERE order_num = 20008;

输出

+---------+----------+------------+
| prod_id | quantity | item_price |
+---------+----------+------------+
| RGAN01  |        5 |       4.99 |
| BR03    |        5 |      11.99 |
| BNBG01  |       10 |       3.49 |
| BNBG02  |       10 |       3.49 |
| BNBG03  |       10 |       3.49 |
+---------+----------+------------+

item_price列包含订单中每项物品的单价。如下汇总物品的价格(单价乘以订购数量):

输入

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 |
+---------+----------+------------+----------------+
| RGAN01  |        5 |       4.99 |          24.95 |
| BR03    |        5 |      11.99 |          59.95 |
| BNBG01  |       10 |       3.49 |          34.90 |
| BNBG02  |       10 |       3.49 |          34.90 |
| BNBG03  |       10 |       3.49 |          34.90 |
+---------+----------+------------+----------------+

分析:输出中显示的expanded_price列为一个计算字段,此计算为quantity*item_price。

MySQL算术符

操作符 说明
+
_
*
/

如何测试计算
SELECT提供了测试和试验函数与计算的一个很好的办法。虽然SELECT通常用来从表中检索数据,但可以省略FROM子句以便简单地访问和处理表达式。
例如 SELECT 3*2;将返回6,
SELECT Trim(‘abc’);将返回abc,
而SELECT Now()利用Now()函数返回当前日期和时间。通过这些例子,
可以明白如何根据需要使用SELECT进行试验。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章