欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

database:concat

程序员文章站 2022-05-05 10:55:44
...


http://blog.csdn.net/pythonkiddz/article/details/55059162

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

拼接字段

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

SELECT Concat("(", prod_id, ")", " ", prod_name)
FROM products;
  • 1
  • 2
  • 3

database:concat

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

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

SELECT Concat("(", prod_id, ")", " ", prod_name) AS p_name
FROM products;
  • 1
  • 2
  • 3

database:concat

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

算数计算

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

SELECT prod_id, quantity, item_price
FROM orderitems
WHERE order_num = 20005;
  • 1
  • 2
  • 3
  • 4

database:concat

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

SELECT prod_id, quantity, item_price,
       quantity*item_price AS total
FROM orderitems
WHERE order_num = 20005;
  • 1
  • 2
  • 3
  • 4
  • 5

database:concat

SELECT测试

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

SELECT 2*3;
  • 1
  • 2

database:concat

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

database:concat

SELECT "abc             ";   #不去掉
  • 1
  • 2

database:concat

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

SELECT now();
  • 1
  • 2

database:concat