計(jì)算字段
存儲(chǔ)在數(shù)據(jù)庫表中的數(shù)據(jù)一般不是應(yīng)用程序所需要的格式。需要直接從數(shù)據(jù)庫中檢索出轉(zhuǎn)換、計(jì)算或格式化過的數(shù)據(jù),而不是檢索出后在客戶機(jī)應(yīng)用程序中重新格式化。
計(jì)算字段并不實(shí)際存在于數(shù)據(jù)庫表中蔬蕊,而是運(yùn)行在SELECT
語句內(nèi)創(chuàng)建的
- 字段(field):基本上以列的意思相同,經(jīng)掣绻龋互換使用岸夯。只有數(shù)據(jù)庫知道
SELECT
語句中哪些列是實(shí)際的表列,哪些列是計(jì)算字段们妥。
拼接字段
例:vendors表包含供應(yīng)商名和位置信息猜扮。假如要生成一個(gè)供應(yīng)商報(bào)表,需要按照name(location)的格式列出
- 拼接(concatenate):將值聯(lián)結(jié)到一起構(gòu)成單個(gè)值监婶。多數(shù)DBMS使用
+
或||
來實(shí)現(xiàn)拼接旅赢,但MySQL使用Concat()
函數(shù)。
SELECT Concat(vend_name, ' (', vend_country, ')')
FROM vendors
ORDER BY vend_name;
- 刪除數(shù)據(jù)右側(cè)多余空格惑惶,使用
RTrim()
函數(shù):
SELECT Concat(RTrim(vend_name), ' (', vend_country, ')')
FROM vendors
ORDER BY vend_name;
同理煮盼,刪除左邊空格LTrim()
,兩邊空格Trim()
带污。
使用別名(alias)
SELECT Concat(RTrim(vend_name), ' (', vend_country, ')') AS vend_title
FROM vendors
ORDER BY vend_name;
執(zhí)行算數(shù)計(jì)算
對(duì)檢索出的數(shù)據(jù)進(jìn)行檢索計(jì)算僵控。
例:orders表包含收到的所有訂單,orderitems表包含每個(gè)訂單中的各項(xiàng)物品,item_price列包含單價(jià)鱼冀。匯總物品的價(jià)格(單價(jià)乘以訂購數(shù)量):
SELECT prod_id,
quantity,
item_price,
quantity*item_price AS expanded_price
FROM orderitems
WHERE order_num = 20005;