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進行試驗。

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