SQL学习之计算字段的用法与解析
一、计算字段
1、存储在数据库表中的数据一般不是应用程序所需要的格式。大多数情况下,数据表中的数据都需要进行二次处理。下面举几个例子。
(1)、我们需要一个字段同时显示公司名和公司地址,但这两个信息存储在不同表的列中。
(2)、省份、城市、邮政编码存储在不同的列中(大多数情况下是这样),但邮件标签打印程序需要把它们作为一个有恰当顺序、格式的字段打印出来。
(3)、列数据是大小写混合的,但报表程序需要把所有的程序按大写表示出来。
(4)、物品订单表存储物品的价格和数量,不存储每个物品的总价格,但是打印发票需要物品的总价格。上述的例子中,存储在表中的数据都不是应用程序所需要的,我们需要从数据中检索出来、并转换、计算或格式化过的数据。而不是检索出来,再到客户端进行初始化。
这时,计算字段就可以派上用场了,计算字段并不实际存在与数据表中,计算字段是运行在SELECT语句内创建的。
字段:字段基本上与列的疑似相同,经常互换使用,不过数据库列一般称为列,而术语字段通常与计算字段一起使用。
这里需要注意:只有数据库的知道SELECT语句中哪些列是实际的表列,那些列是计算字段。从客户端(如Web应用程序)来看,计算字段的数据与其他列的数据的返回方式相同。
在SQL语句内可完成许多数据转换和格式化工作都可以直接在客户端应用程序中完成。但一般来说在数据库服务器上完成这些操作比在客户端中完成要快很多!
2、拼接字段
将两个或多个字段的值拼接到一起组成一个字段。代码如下
select * from dbo.student
现在有一个需求,一个报表需要一个字段包student_deatils含学生表的姓名,年龄,性别,作为学生的基本信息,下面是解决代码:
select sname +'('+ssex+','+CONVERT(varchar,sage)+')' as student_deatils from dbo.student
ok,完成需求
注意:不同的DBMS(数据库管理系统)使用字符串拼接的操作符不同,Acesss和SQL Server使用的是'+',DB2、Oracle、PostgreSQL、SQLite和Open Office Base使用 '||' 。MySql和MariaDB中必须使用特殊的函数。
3、计算字段进行算术运算
计算字段的另一种常见用途是对检索出的数据进行算术计算。如下代码:
select * from tb_order
现在由一个报表程序需要每个订单的订单编号、实际价格(单价*折扣)和总价格,解决代码如下:
select OrderId as 订单编号,price*quantity as 实际价格,price*quantity*ordercount as 总价格 from dbo.tb_order
ok,完成需求!