zoukankan      html  css  js  c++  java
  • 第7课 创建计算字段

    第7课 创建计算字段

    7.1 计算字段

    计算字段并不实际存在于数据库表中。计算字段是运行时在SELECT语句内创建的。

    7.2 拼接字段

    拼接(concatenate)
    将值联结到一起(将一个值附加到另一个值)构成单个值。

    解决办法是把两个列拼接起来。在SQL中的SELECT语句中,可使用一个特殊的操作符来拼接两个列。根据你所使用的DBMS,此操作符可用加号(+)或两个竖杠(||)表示。在MySQL和MariaDB中,必须使用特殊的函数。

    说明:是+还是||?
    Access和SQL Server使用+号。DB2、Oracle、PostgreSQL、SQLite和Open Office Base使用||。详细请参阅具体的DBMS文档。

    下面是使用加号的例子(多数DBMS使用这种语法):

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

    下面是相同的语句,但使用的是||语法:

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

    上面两个SELECT语句拼接以下元素:

    • 存储在vend_name列中的名字;
    • 包含一个空格和一个左圆括号的字符串;
    • 存储在vend_country列中的国家;
    • 包含一个右圆括号的字符串。

    从上述输出中可以看到,SELECT语句返回包含上述四个元素的一个列(计算字段)。

    为正确返回格式化的数据,必须去掉这些空格。这可以使用SQL的RTRIM()函数来完成,如下所示:

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

    RTRIM()函数去掉值右边的所有空格。通过使用RTRIM(),各个列都进行了整理。

    说明:TRIM函数
    大多数DBMS都支持RTRIM()(正如刚才所见,它去掉字符串右边的空格)、LTRIM()(去掉字符串左边的空格)以及TRIM()(去掉字符串左右两边的空格)。

    使用别名

    SELECT语句可以很好地拼接地址字段。但是,这个新计算列的名字是什么呢?实际上它没有名字,它只是一个值。如果仅在SQL查询工具中查看一下结果,这样没有什么不好。但是,一个未命名的列不能用于客户端应用中,因为客户端没有办法引用它。

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

    下面是MySQL和MariaDB中使用的语句:

    SELECT Concat(vend_name, ' (', vend_country, ')')
           AS vend_title
    FROM Vendors
    ORDER BY vend_name;
    

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

    说明:AS通常可选
    在很多DBMS中,AS关键字是可选的,不过最好使用它,这被视为一条最佳实践。

    7.3 执行算术计算

    计算字段的另一常见用途是对检索出的数据进行算术计算。

    item_price列包含订单中每项物品的单价。如下汇总物品的价格(单价乘以订购数量):

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

    输出中显示的expanded_price列是一个计算字段,此计算为quantity*item_price。客户端应用现在可以使用这个新计算列,就像使用其他列一样。

    7.4 小结

    这一课介绍了计算字段以及如何创建计算字段。我们用例子说明了计算字段在字符串拼接和算术计算中的用途。此外,还讲述了如何创建和使用别名,以便应用程序能引用计算字段。

  • 相关阅读:
    IXmlSerializable With WCFData Transfer in Service Contracts
    Difference Between XmlSerialization and BinarySerialization
    Using XmlSerializer (using Attributes like XmlElement , XmlAttribute etc ) Data Transfer in Service Contracts
    Introducing XML Serialization
    Version Tolerant Serialization
    Which binding is bestWCF Bindings
    Data Transfer in Service Contracts
    DataContract KnownTypeData Transfer in Service Contracts
    Using the Message ClassData Transfer in Service Contracts
    DataContract POCO SupportData Transfer in Service Contracts
  • 原文地址:https://www.cnblogs.com/zhangsonghui/p/12944453.html
Copyright © 2011-2022 走看看