存储在数据库表中的数据一般不是应用程序所需要的格式。下面举几个例子。
如果想要在一个字段中既显示公司名,又显示公司的地址,但这两个信息一般包含在不同的表列中。
列数据是大小写混合的,但报表程序需要把所有数据按大写表示出来。
需要根据表数据进行总数、平均数计算或其他计算。
上述每个例子中,存储在表中的数据都不是应用程序所需要的。我们需要直接从数据库中检索出转换、计算或格式化过的数据。这就是计算字段发挥作用的所在了。计算字段并不实际存储在与数据库表中。计算字段是运行在SELECT语句内创建的。
为了说明如何使用计算字段,举个例子。
vendors表包含供应商名和位置信息。假如要生成一个供应商报表,需要在供应商的名字中按照name(location)这样的格式列出供应商的位置。
此报表需要单个值,而表中数据存储在两个列vend_name和vend_country中。此外还需要用括号将vend_country括起来。这些东西都没有明确存储在数据库表中。
我们可以进行拼接(Concat()),将值联结到一起构成单个值。
SELECT Concat(vend_name,'(',vend_country,')')
FROM vendors
ORDER BY vend_name;
Concat()拼接串,即把多个串连接起来形成一个较长的串。Concat()需要一个或多个指定的串,各个串之间用逗号分隔。
SELECT Concat(RTrim(vend_name),'(',vend_country,')')
FROM vendors
ORDER BY vend_name;
RTrim()函数去掉值右边的所有空格。
LTrim()函数去掉值左边的空格。
Trim()函数去掉值两边的空格。
计算字段的另一常见用途是对检索出的数据进行算术计算。
SELECT prod_id,quantity,item_price,quantity*item_price AS expanded_price
FROM orderitems
WHERE order_num=2005;
输出中显示的expanded_price列为一个计算字段。
算数操作符:+ - * / 都支持。
SELECT通常用来从表中检索数据,但可以省略FROM子句以便简单地访问和处理表达式。
例如:SELECT 2*3 将返回6;SELECT Now()返回当前 日期和时间。