SQL必知必会 - 创建计算字段

目录

1 计算字段

2 拼接字段

3 赋值拼接字段的别名

4 执行算术计算


1 计算字段

字段:与 列 意思相同,经常互换使用。数据库的列一般称为列,“字段”一词汇则在计算字段时使用。

  • 字段不实际存在在数据库表里,而是在运行select语句内创建
  • 计算字段的数据与其他列的数据返回的方式相同

2 拼接字段  +  ||

  • 拼接:将值联结在一起,将一个值附加到另一个值上,构成单个值。
  • 拼接的操作符:加号 + 或者两个竖杠 ||

e.g. 将vendors的vend_name 和 vend_country 拼接到同一个单元格,并将vend_country这列的内容用括号加在后面。

SELECT vend_name + ' ( ' + vend_country + ' ) ' 
FROM Vendors;   --用 + 拼接


SELECT vend_name || ' ( ' || vend_country || ' ) ' 
FROM Vendors; --用 || 拼接

PS 可再加入去除右边空格的函数RTRIM( ) ,与excel的除空格函数作用相同,更好地清洗拼接后的文本内容。

  • 去除字符串右边空格的函数   RTRIM( )
  • 去除字符串左边空格的函数   LTRIM( )
  • 去除字符串左右两边空格的函数   TRIM( )
SELECT RTRIM(vend_name) + ' (' + RTRIM (vend_country) + ')'
FROM Vendors ; -- 去空格函数&运用加号拼接

SELECT RTRIM(vend_name) || ' (' || RTRIM (vend_country) || ')'
FROM Vendors ; -- 去空格函数&运用俩竖行符拼接

3 赋值拼接字段的别名 AS

  • 背景:一个未命名的列不能被引用的话,就无法运用于客户端,所以需要赋予别名。
  • 别名可以是一个单词,也可以是一个字符串。如果使用字符串作为别名,字符串应该放在引号里
  • 别名用  AS  关键词赋予
  • AS 要放在计算字段后面,即FROM前面
  • 也可以省略AS 用空格隔开新名称即可

e.g.1 AS简单用法 +可省略

select son as '学号'
from T;

select son  '学号'
from T;

e.g2. 将vendors的vend_name 和 vend_country 拼接到同一个字符串之后,将其赋名为vend_title

SELECT RTRIM( vend_name)  +  '('+ RTRIM (vend_country) +')' 
     AS vend_title
FROM vendors;

SELECT RTRIM( vend_name)  ||  '('|| RTRIM (vend_country) ||')' 
       AS vend_title
FROM vendors;

e.g3. 用concat拼接函数,将vendors的vend_name 和 vend_country 拼接到同一个字符串之后,将其赋名为vend_title

SELECT CONCAT( RTRIM (vend_name), '(', RTIRM (vend_country), ')' )
       AS vend_title
FROM vendors;

4 执行算术计算

  • 计算字段可用于对检索出的数据进行算术计算
  •  SQL算术操作符列表:
操作符

说明

+

-
*
/
%除余

e.g1. 在orders表中,检索订单号为20008中的所有物品的id、数量和价信息。并添加每个id的汇总金额(单价*数量)。即expanded_price为计算字段 

SELECT prod_id,prod_price,quantity,
       quantity * prod_price
       AS expanded_price
FROM orders 
WHERE order_num = 20008;

e.g2. 表Employees如下,现需计算每个雇员的奖金。如雇员的id是奇数且名字不以'M'开头,那么他的奖金是他工资的100%,否则奖金为0。

+-------------+---------+
| 列名        | 类型     |
+-------------+---------+
| employee_id | int     |
| name        | varchar |
| salary      | int     |
+-------------+---------+

select employee_id,
case when employee_id % 2 =1 and 
          name not like 'M%'
then salary
else 0
end
as bonus
from emploees;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值