创建计算字段

有的时候我们需要直接从数据库中检索出转换、计算或格式化过的数据;而不是检索出数据,然后在客户机应用程序或报告程序中重新格式化。

这就会计算字段发挥作用的所在了。

计算字段并不实际存在于数据库表中。计算字段你是运行时再select语句内创建的。

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

一、拼接字段

为了说明如何使用计算字段,举一个创建由两列组成的标题的简单例子。

**拼接(concatenate)**将值联结到一起构成单个值

解决办法就是把两个列拼接起来。在Mysql的select语句中,可使用Concat()函数来拼接两个列。

多数DBMS使用+或||来实现拼接,Mysql则使用Concat()函数来实现。当把Sql语句转换成mysql语句时一定要把这个区别铭记在心。

mysql>select Concat(vend_name,‘(’,vend_contry,‘)’) from venders order by vend_name;

Concat()拼接串,即把多个串连接起来形成一个较长的串。

得到以下输出:

Concat(vend_name,‘(’,vend_contry,‘)’)ACME(USA)Anvils R Us (USA)

曾提到过通过删除右侧多余的空格来整理数据,这可以使用MySQL的RTrim()函数来完成

mysql>select Concat(RTrim(vend_name),‘(’,RTrim(vend_contry),‘)’) from vendors order by vend_name;

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

MySQL除了支持RTrim()去掉右边的空格,

还支持LTrim()去掉串左边的空格

以及Trim()去掉串左右两边的空格

二、使用别名

别名(alias)是一个字段或值的替换名。别名用AS关键字赋予。

mysql>select Concat(RTrim(vend_name),‘(’,RTrim(vend_contry),‘)’) AS vend_title from vendors order by vend_name

得到以下输出:

vend_title

ACME(USA)

Anvils R Us (USA)

别名有时也称为导出列(derived column),不管称为什么,它们所代表的都是相同的东西。

三、执行算术计算

mysql>select prod_id, quantitym,item_price from orderitems where order_num = 2005;

mysql>select prod_id,quantity,item_price,quantity * item_price AS expanded_price from orderitems where order_num = 20005;

操作符

说明

+


-


*


/


这里提到一个mysql提供的友好测试方法

select 3*2 ; -> 返回 6

select Trim(‘abc’); -> 返回abc

select Now()利用Now()函数返回当前日期和时间