美文网首页
SQL 计算字段

SQL 计算字段

作者: 山药鱼儿 | 来源:发表于2022-03-10 23:37 被阅读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
    

    总结

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

    相关文章

      网友评论

          本文标题:SQL 计算字段

          本文链接:https://www.haomeiwen.com/subject/nrnarrtx.html