MySQL计算字段(19)

323 阅读2分钟

「这是我参与11月更文挑战的第19天,活动详情查看:2021最后一次更文挑战

字段(field) 基本上与列(column)的意思相同,经常互换使用,不过数据库列一般称为列,而术语字段通常用在计算字段的连接上。

拼接字段

拼接(concatenate) 将值联结到一起构成单个值。解决办法是把两个列拼接起来。在MySQL的SELECT语句中,可使用Concat()函数来拼接两个列。

select Concat(v_name,'(', v_country, ')') from vendors
order by v_name;

输出如下:

image.png

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

RTrim()函数

select Concat( RTrim(v_name),'(',RTrim(v_country),')') from vendors
order by v_name;

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

使用别名

从前面的输出中可以看到,SELECT语句拼接地址字段工作得很好。但此新计算列的名字是什么呢?实际上它没有名字,它只是一个值。如果仅在SQL查询工具中查看一下结果,这样没有什么不好。但是,一个未命名的列不能用于客户机应用中,因为客户机没有办法引用它。

为了解决这个问题,SQL支持列别名。别名(alias)是一个字段或值的替换名。别名用AS关键字赋予。请看下面的SELECT语句:

select Concat(RTrim(v_name),'(',RTrim(v_country),')') as vend_title 
from vendors order by v_name;

输出如下:

image.png

执行算术计算

计算字段的另一常见用途是对检索出的数据进行算术计算。举一个例子,orders表包含收到的所有订单,orderitems表包含每个订单中的各项物品。下面的SQL语句检索订单号20005中的所有物品:

select p_id,quantity,item_price from orderitems
where order_num = 20005;

输出如下:

image.png

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

select p_id,
    quantity,
    item_price,
    quantity * item_price as expanded_price
from oderitems
where order_num = 20005;

输出:

image.png

输出中显示的expanded_price列为一个计算字段,此计算为quantity*item_price。客户机应用现在可以使用这个新计算列,就像使用其他列一样。