————介绍什么是计算字段,如何创建计算字段,以及如何从应用程序中使用别名引用它们

1. 概念介绍

  • 字段(field)

基本上与列(column)的意思相同,经常互换使用,不过数据库列一般称为列,而字段这个术语通常在计算字段这种场合下使用

2. 拼接字段

2.1 拼接(concatenate)

将值联结在一起(将一个值附加到另一个值)构成单个值
说明

  • SQL Server使用”+”,多数DBMS使用”+”

    1. SELECT vend_name + '(' + vend_country + ')' FROM Vendors ORDER BY vend_name;
    2. /*output
    3. Bear Emporium (USA )*/
  • DB2、Oracle、PostgreSQL和SQLite使用”||”

    SELECT vend_name || '(' || vend_country || ')' FROM Vendors ORDER BY vend_name;
    /*output
    Bear Emporium       (USA    )*/
    
  • MySQL或MariaDB使用”,”

    SELECT Concat(vend_name, ' (', vend_country, ')') FROM Vendors ORDER BY vend_name;
    /*用","代替"+"或"||"*/
    

    2.2 TRIM函数

  • RTRIM:去掉字符串右侧的空格

  • LTRIM:去掉字符串左侧的空格
  • TRIM:去掉字符串左右两侧的空格

    SELECT RTRIM(vend_name) + ' (' + RTRIM(vend_country) + ')' FROM Vendors ORDER BY Vend_name;
    /*output
    Bear Emporium (USA)*/
    /*空格为引号内的空格*/
    
    SELECT RTRIM(vend_name) || ' (' || RTRIM(vend_country) || ')' FROM Vendors ORDER BY Vend_name;
    /*output
    Bear Emporium (USA)*/
    /*空格为引号内的空格*/
    

    2.3 别名

    有时成为导出列

  • 使用”+”

    SELECT RTRIM(vend_name) + ' (' + RTRIM(vend_country) + ')' AS vend_title FROM Vendors ORDER BY Vend_name;
    /*output
    vend_title
    Bear Emporium (USA)*/
    /*空格为引号内的空格*/
    
  • 使用”||”

    SELECT RTRIM(vend_name) || ' (' || RTRIM(vend_country) || ')' AS vend_title FROM Vendors ORDER BY Vend_name;
    /*output
    vend_title
    Bear Emporium (USA)*/
    /*空格为引号内的空格*/
    
  • MySQL和MariaDB中使用”,”

    SELECT Concat(RTRIM(vend_name), ' (' RTRIM(vend_country),')') AS vend_title FROM Vendors ORDER BY Vend_name;
    /*output
    vend_title
    Bear Emporium (USA)*/
    /*空格为引号内的空格*/
    

    2.4 执行算数计算

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

    SQL支持列出的基本算数运算操作符,此外,圆括号可用来区分优先级。

操作符 说明
+
-
*
/