03 SQL拼接字段

03 SQL拼接字段

标签:数据库、SQL

1.拼接字段

  通过添加组合字段,使其便成为一个新的组合的变量输出出来。
①使用“||”

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

  不仅可以拼接表中的不同变量,也可以加引号拼接字符串。而且,会使变量后面意外的加上空格。还有一些数据库使用的是“+”来代替这里的“||”,使用方法同理。

RTRIM()LTRIM()TRIM()

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

  这里是用RTRIM()函数来使得本来存在的会添加的空格消失。大多数DBMS都支持RTRIM()(正如刚才 所见,它去掉字符串右边的空 格)、LTRIM()(去掉字符串左边的空 格)以及TRIM()(去掉字符串左右两边的 空格

③命名列

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

  这句主要是注意 AS vend_title 这一句,命名了输出的新的列。

这里的计算字段之后跟了文本AS vend_title。它指示SQL创建一个包含指定 计算结果的名为vend_title的计算字段。从 输出可以看到,结果与以前的相同,但现在 列名为vend_title,任何客户端应用都可以 按名称引用这个列,就像它是一个实际的列一样

④输出原本列和组合列

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

  最后一个列是一个相乘的组合列,对此,也同样地给新的列重命名了。同理,+、-、*、/ 都是可以是用来组合列的。

2.使用基本函数

  在上一条中,我们已经使用过函数去掉了左边的空格了。其他更多的函数可以自行查看文档,或者参考Oracle 函数大全-博客园

①以函数处理时间Datepart

SELECT order_num 
FROM Orders 
WHERE DATEPART(yy, order_date) = 2012

  使用DATAPART()函数,对时间类型,来选择年份为2012的数据。根据数据库系统的不同,不同的系统运用不同的函数。对于Oracle系统而言,可以查看呢ORACLE日期时间函数大全来获取相关信息。
  以下是Oracle的与上例同类的用法:

SELECT order_num 
FROM Orders 
WHERE to_number(to_char(order_date, 'YYYY')) = 2012;

  或者使用between来夹杂日期间隔。

SELECT order_num FROM Orders WHERE order_date BETWEEN to_date('01-01-2012') AND to_date('12-31-2012');

3.聚集函数

  这些聚集函数的作用和它们的名字一模一样。用来返回行数、平均值、最大值、最小值等等之类的信息。

函  数说  明
AVG()返回某列的平均值
COUNT()返回某列的行数
MAX()返回某列的最大值
MIN()返回某列的最小值
SUM()返回某列值之和

①某一列的平均值

SELECT AVG(prod_price) 
AS avg_price FROM Products;

  或者可以添加完限制条件之后再返回所要求求得的平均值

SELECT AVG(prod_price) 
AS avg_price
FROM Products 
WHERE vend_id = 'DLL01';

COUNT()函数
  count()函数的两种用法
• 使用COUNT(*)对表中行的数目进行计数,不 管表列中包含的是空值(NULL)还是非空 值。
• 使用COUNT(column)对特定列中具有值的行 进行计数,忽略NULL值

4.数据分组

SELECT vend_id, COUNT(*) AS num_prods 
FROM Products 
GROUP BY vend_id;

  上面的SELECT语句指定了两个列:vend_id 包含产品供应商的ID,num_prods为计算字段(用COUNT(*)函数建立)。GROUP BY子句指 示 DBMS 按 vend_id 排序并分组数据。这就会 对每个 vend_id 而不是整个表。

5.过滤分组——HAVING

  HAVING非常类似于WHERE。事实上,目前 为止所学过的所有类型的WHERE子句都可以 用HAVING来替代。having的原理是先select 然后从select出来的进行筛选。而where是先筛选在select。

SELECT cust_id, COUNT(*) AS orders 
FROM Orders 
GROUP BY cust_id 
HAVING COUNT(*) >= 2;

  这条SELECT语句的前三行类似于上面的语 句。最后一行增加了HAVING子句。比如,现在如果用WHERE对orders进行判断,就会报错。要知道,WHERE在数据分 组前进行过滤,HAVING在数据分组后进行 过滤。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值