MySQL-创建计算字段

来源:互联网 发布:java 函数缺省参数 编辑:程序博客网 时间:2024/06/06 10:48

在谈计算字段之前,我们先想一想。储存在数据库中的原始表给我们提供了足够的数据,比如products表中就有商品id,商品名,供应商id,单价。但是实际生活中,比如超市收银员,他们在打单据的时候可不是直接提取原始表单打出来,而是打出一个有商品名,商品单价,和总价的新格式的表单。这个是数据库里没有的,这就是计算字段的用途,用来对原始数据进行加工,从而返回我们需要的表单数据和格式。

拼接字段

我们先进行一种叫作拼接的加工,就是把多个列的值拼成单个列。比如商品id和商品名是两列,现在我想得到形如“(商品id) 商品名”这种新格式的列。怎么做?我们用Concat()函数来拼接

SELECT Concat("(", prod_id, ")", " ", prod_name)FROM products;

这里写图片描述

现在我们就有了新的列,只不过这种列不存在于数据库中,而是在运行SELECT语句内创建的。
注意:只有数据库知道SELECT语句中用到的列哪些是原始列,哪些是计算字段。我们客户机看到的只是返回的数据列,哪知道哪个是原始的,哪个是计算加工过的?

上面我们已经拼接了一个计算字段,但是我们发现,看上去它的名字好像很长,但实际上,这个计算字段是没有名字的。一个未命名的列肯定不是一件好事,因此我们需要用AS来取个别名

SELECT Concat("(", prod_id, ")", " ", prod_name) AS p_nameFROM products;

这里写图片描述

注:也可以用AS来重命名原始列名

算数计算

上面介绍的拼接,现在介绍的汇总。汇总嘛,就要用到计算了。我们现在有一个订单表,里面都是客户下的订单。现在我们来看一下订单号为20005的由产品id,产品单价,产品数量组成的表单。

SELECT prod_id, quantity, item_priceFROM orderitemsWHERE order_num = 20005;

这里写图片描述

我现在想新增加一列,作为每一个产品的总价

SELECT prod_id, quantity, item_price,       quantity*item_price AS totalFROM orderitemsWHERE order_num = 20005;

这里写图片描述

SELECT测试

之前我们在正则表达式中已经提过了用SELECT进行测试,现在我们仍然可以用SELECT进行其他测试,比如计算。

SELECT 2*3;

这里写图片描述

SELECT rtrim("abc "); #去掉abc右边空格

这里写图片描述

SELECT "abc             ";   #不去掉

这里写图片描述

当然,还有神奇的now()函数来返回当前时间

SELECT now();

这里写图片描述

0 0