SQL 计算字段

2022-03-10  本文已影响0人  山药鱼儿

计算字段

什么是计算字段呢?

当存储在数据库表中的数据不能直接满足我们的需求时,就需要我们利用已有的字段,创造出所需内容。比如:省、市、县、邮政编码存储在不同的字段中,而我们需要三者组合在一起的格式化信息;再比如订单表存储了商品的价格和数量,而我们却需要知道每类物品的总价格。

这就需要我们使用计算字段了,计算字段并不实际存在于数据库表中,而是运行时在 SELECT 语句内创建的。下面,我们来学习计算字段中常见的两种形式。

拼接字段

供应商表的信息如下:

接下来,我们将创建计算字段来将 vend_namevend_country 组合在一起。

SELECT vend_name || '(' || vend_country || ')'
FROM Vendors
ORDER BY vend_name;

运行结果:

注 1:不同的 DBMS 实现字符串拼接的方式不同。小鱼这里使用的是 SQLite ,拼接操作符为 ||DB2、Oracle、PostgreSQL 使用的也是 ||SQL Server 使用的拼接符为 +MySQLMariaDB 使用的则是函数 Concat .

许多数据库保存填充为列宽的文本值,这就会导致字符串右侧可能出现空格,使用 RTRIM 函数可以去除字符串右侧的空格。

SELECT RTRIM(vend_name) || '(' || RTRIM(vend_country) || ')'
FROM Vendors
ORDER BY vend_name;

运行结果:

注 2:大多数 DBMS 都支持 RTRIM() 删除字符串右侧空格、LTRIM 删除字符串左侧空格和 TRIM 删除字符串两侧空格。

以上检索结果中,计算字段默认的字段名称为 SELECT 语句中创建计算字段的 SQLRTRIM(vend_name) || '(' || RTRIM(vend_country) || ')'。其实,我们可以使用 AS 关键字为字段取一个别名:

SELECT RTRIM(vend_name) || '(' || RTRIM(vend_country) || ')' AS vend_title
FROM Vendors
ORDER BY vend_name;

检索结果:

除了计算字段,当实际的列名包含不合法字符(如空格)时,也可以用 AS 为列指定别名;在原来的列名不够明确时,也会用 AS 指定别名。

执行算数计算

计算字段的另一种常见用途是对检索出来的数据进行算数运算。订单明细表如下:

接下来,假设我们需要检索订单号为 20008 的订单,购买的每种商品的单价、数量以及每种商品支付的总价。其中,单价和数量可以直接检索得到:

SELECT prod_id, quantity, item_price
FROM OrderItems
WHERE order_num=20008;

检索结果:

创建计算字段 expand_price 计算每类商品支付的总价:

SELECT prod_id, quantity, item_price, quantity*item_price AS expand_price
FROM OrderItems
WHERE order_num=20008;

检索结果:

SELECT 语句用于数据检索,但省略 FROM 子句后,却是一个测试、检验函数和计算的好工具。

用于测试计算:

SELECT 3*4;

用于测试函数:

SELECT TRIM('   mia    ');

测试输出:

SELECT CURRENT_DATE

总结

本节,我们学习了计算字段以及如何创建计算字段,期间还介绍了创建及使用别名的方法。

上一篇 下一篇

猜你喜欢

热点阅读