• MySQL基础之创建计算字段


    创建计算字段

    存储在数据库表中的数据一般不是应用程序所需的格式。我们需要直接从数据库中检索出转换、计算或格式化过的数据; 而不是检索出数据, 然后再在客户机应用程序上重新格式化。这就是计算字段的作用。

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

    需要注意的是, 只有数据库知道SELECT语句中哪些列是实际的表列, 哪些列是计算字段。在客户机角度来看, 计算字段的数据是以与其他列的数据相同的方式返回的。

    拼接字段

    拼接(concatenate): 将值联结到一起构成单个值

    在MySQL的SELECT语句中, 可使用Connat()函数来拼接两个列

    MySQL的不同之处

    多数DBMS使用+或||来实现拼接, MySQL则使用Concat()函数来实现。

    MariaDB [crashcourse]> SELECT Concat(vend_name, '(', vend_country, ')') FROM vendors ORDER BY vend_name;
    +-------------------------------------------+
    | Concat(vend_name, '(', vend_country, ')') |
    +-------------------------------------------+
    | ACME(USA)                                 |
    | Anvils R Us(USA)                          |
    | Furball Inc.(USA)                         |
    | Jet Set(England)                          |
    | Jouets Et Ours(France)                    |
    | LT Supplies(USA)                          |
    +-------------------------------------------+
    6 rows in set (0.003 sec)
    
    MariaDB [crashcourse]> 

    Concat()拼接串, 即把多个串连接起来形成一个较长的串。Concat()需要一个或多个指定的串, 各个串之间使用逗号分隔。

    删除数据右侧多余的空格来整理数据, 这可以使用MySQL的RTrim()函数来完成。

    MariaDB [crashcourse]> SELECT Concat(RTrim(vend_name), '(', RTrim(vend_country), ')') FROM vendors ORDER BY vend_name;
    +---------------------------------------------------------+
    | Concat(RTrim(vend_name), '(', RTrim(vend_country), ')') |
    +---------------------------------------------------------+
    | ACME(USA)                                               |
    | Anvils R Us(USA)                                        |
    | Furball Inc.(USA)                                       |
    | Jet Set(England)                                        |
    | Jouets Et Ours(France)                                  |
    | LT Supplies(USA)                                        |
    +---------------------------------------------------------+
    6 rows in set (0.003 sec)
    
    MariaDB [crashcourse]> 

    Trim函数

    MySQL除了支持RTrim函数()(去掉串右边的空格)之外, 还支持LTrim()(去掉串左边的空格)以及Trim()(去掉串左右两边的空格)

    使用别名

    SELECT拼接计算字段中, 新计算出来列的名字其实不是名字, 它只是一个值。一个未命名的列不能应用于客户机应用中, 因为客户机没办法引用它。

    为了解决这个问题, SQL还支持列别名。别名(alias)是一个字段或值的替换名。别名用AS关键字赋予

    MariaDB [crashcourse]> SELECT Concat(RTrim(vend_name), '(', RTrim(vend_country), ')') AS vend_title FROM vendors ORDER BY vend_name;
    +------------------------+
    | vend_title             |
    +------------------------+
    | ACME(USA)              |
    | Anvils R Us(USA)       |
    | Furball Inc.(USA)      |
    | Jet Set(England)       |
    | Jouets Et Ours(France) |
    | LT Supplies(USA)       |
    +------------------------+
    6 rows in set (0.001 sec)
    
    MariaDB [crashcourse]> 

    它指示SQL创建一个包含指定计算的名为vend_title的计算字段。现在列名为vend_title, 任何客户机应用都可以按名引用这个列。就像它是一个实际的表列一样。

    执行算术计算

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

    MariaDB [crashcourse]> SELECT prod_id, quantity, item_price, quantity * item_price AS expanded_price FROM orderitems WHERE order_num = 20005;
    +---------+----------+------------+----------------+
    | prod_id | quantity | item_price | expanded_price |
    +---------+----------+------------+----------------+
    | ANV01   |       10 |       5.99 |          59.90 |
    | ANV02   |        3 |       9.99 |          29.97 |
    | TNT2    |        5 |      10.00 |          50.00 |
    | FB      |        1 |      10.00 |          10.00 |
    +---------+----------+------------+----------------+
    4 rows in set (0.000 sec)
    
    MariaDB [crashcourse]> 

    MySQL支持表中列出的基本算术运算操作符。 此外, 圆括号可用来区分优先顺序。

    如何测试计算

    SELECT提供了测试和试验函数与计算的一个很好的办法。可以忽略FROM子句以便简单地访问和处理表达式。

    例如: SELECT 3*2; 将返回6, SELECT Trim('abc '); 将返回abc, 而SELECT Now()利用Now()函数返回当前日期和时间。

  • 相关阅读:
    Oracle中merge into的使用
    ORACLE闪回操作 .
    Xmanager远程连接rel5 linux
    ORACLE EXPDP/IMPDP命令使用详细 .
    Oracle Hint
    Oracle中Union与Union All的区别
    关于文件不能访问,IIS提示MIME类型没有错误的解决方法
    当葱头碰上豆瓣酱时
    唯美之希望
    【出行贴士】全国旅游最佳时间
  • 原文地址:https://www.cnblogs.com/featherwit/p/13369054.html
Copyright © 2020-2023  润新知