- /*
- 什么是计算字段?
- 计算字段是运行时在 SELECT 语句内创建的
- 为什么要使用计算字段?
- 由于直接存储在数据库表中的数据在实际应用中不能拿来直接使用,
- 比如物品订单表里有单价和数量, 但是我们也需要汇总总价格等场景,
- 这个时候我们需要直接从数据库中检索出转换 / 就散或格式化过的数据,
- 这个时候计算字段也就派上用场了.
- */
- # 需要注意的一个细节是虽然从客户端来看计算字段的数据与其他列的数据返回方式相同, 但是只有数据库知道哪些是实际的表列, 哪些列是计算字段.
- # 许多转换和格式化工作在数据库服务器上完成比在客户端完成要快得多.
-- 拼接字段(将值联结到一起构成单个值)
- /*
- 1. 在 Access 和 SQL Server 中使用 + 号
- 2. 在 DB2,Oracle,PostgreSQL,SQLLite 和 Open Office Base 使用 ||
- 3. 在 MySQL 和 MariaDB 中, 必须使用特殊的函数
- */
- SELECT Concat(vend_name,'(',vend_country,')')
- FROM Vendors
- ORDER BY vend_name;
/*SELECT 语句拼接包括以下元素:
1. 存储在 vend_name 列中的名字;
2. 包含一个空格和一个左圆括号的字符串;
3. 存储在 vend_country 列中的国家;
4. 包含一个右圆括号的字符串
*/
-- 去掉计算字段中的空格用到的函数
/* RTRIM()函数去掉右边所有空格; LTRIM()函数去掉字符串左边的空格; TRIM()去掉字符串左右两边的空格 */
-- 使用别名 alias(因为 SELECT 拼接出的字段并没有列名, 未命名的列不能应用于客户端中, 所以需要定义别名, 用 AS 关键字赋予)
- SELECT Concat(vend_name,'(',vend_country,')')
- AS vend_title
- FROM Vendors
- ORDER BY vend_name;
- /* AS vend_title 多加了文本, 指示 SQL 创建一个包含指定计算结果的名为 vend_title 的计算字段 */
- /* 别名的其他用途:
- 1. 在实际的列表名包含不合法的字符 (如空格) 是重新命名它, 在原来的名字含混或容易误解时扩充它.
- 2. 别名的名字既可以是一个单词, 也可以是一个字符串.(字符串应该括在引号中)
- 多名字会给客户端应用带来各种问题, 最常见的使用是将多个单词的列名重命名为一个单词的名字.
- 3. 别名也称为导出列.
- */
-- 执行算术计算
- SELECT prod_id,quantity,item_price
- FROM Orderitems
- WHERE order_num = 20008;
-- 计算总价格
- SELECT prod_id,
- quantity,
- item_price,
- quantity*item_price AS expanded_price
- FROM Orderitems
- WHERE order_num = 20008;
总结:
SELECT 语句得到计算字段的用途有两个:
1. 拼接字段
2. 算术计算
-- SQL 算术操作符 (+ - */) 运算优先级前面已经讲过
-- SELECT 语句为测试, 检验函数和计算提供了很好的方法, 当省略了 FROM 子句后就是简单地访问和处理表达式
SELECT 3*2;
SELECT Trim('abc');
SELECT Now();
来源: https://www.cnblogs.com/ao-yu-a/p/11073093.html