美文网首页
计算字段和数值处理函数

计算字段和数值处理函数

作者: 禅与发现的乐趣 | 来源:发表于2018-07-02 14:58 被阅读9次

    拼接字段

    MySQL 的不同之处:多数 DBMS 使用+或||来实现拼接,MySQL 使用 Concat()函数来实现。

    拼接两个列

    将两列拼接成一个展示形式:vend_name (vend_country)

    mysql> 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)                          |
    +--------------------------------------------+
    
    删除多余的空格 RTRIM
    SELECT CONCAT(RTRIM(vend_name), ' (', vend_country, ')') FROM vendors ORDER BY vend_name;
    

    显然 MySQL 还支持LTRIMTRIM分别删除左边的空格和两边的空格。

    使用别名AS

    签名拼接两列的结果可以看到,拼接后的列名是CONCAT(vend_name, ' (', vend_country, ')'),这显然很不友好,所以我们可以使用别名。

    mysql> 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)       |
    +-------------------------+
    

    执行算术计算

    执行算术运算并扩充字段显示:

    mysql> 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 |
    +---------+----------+------------+----------------+
    

    MySQL 支持的加减乘除(+ - * 、)算术运算符,并用括号区分优先级

    now()函数返回当前日期和时间:

    mysql> select now();
    +---------------------+
    | now()               |
    +---------------------+
    | 2018-06-30 16:33:47 |
    +---------------------+
    1 row in set (0.00 sec)
    

    数据处理函数

    函数我们前面已经接触了,比如 trim()rtrim()ltrim()

    文本处理函数

    upper()

    mysql> SELECT vend_name, UPPER(vend_name) AS vend_name_upcase FROM vendors ORDER BY vend_name;
    +----------------+------------------+
    | vend_name      | vend_name_upcase |
    +----------------+------------------+
    | ACME           | ACME             |
    | Anvils R Us    | ANVILS R US      |
    | Furball Inc.   | FURBALL INC.     |
    | Jet Set        | JET SET          |
    | Jouets Et Ours | JOUETS ET OURS   |
    | LT Supplies    | LT SUPPLIES      |
    +----------------+------------------+
    

    常用的文本处理函数:

    函数 说明
    left() 返回串左边的字符
    length() 返回串的长度
    locate() 找出串的一个子串
    lower() 将串转换为小写
    ltrim() 去掉串左边的空格
    right() 返回串右边的字符
    rtrim() 去掉串右边的空格
    soundex() 返回串的 SOUNDEX 值
    substring() 返回子串的字符
    upper() 将串转换成大写
    日期和时间处理函数
    函数 说明
    AddDate() 增加一个日期(天、周等)
    AddTime() 增加一个时间(时、分等)
    CurDate() 返回当前日期
    CurTime() 返回当前时间
    Date() 返回日期时间的日期部分
    DateDiff() 计算两个日期之差
    Date_Add() 高度灵活的日期运算函数
    Date_Format() 返回一个格式化的日期或时间串
    Day() 返回一个日期的天数部分
    DatOfWeek() 对于一个日期,返回对应的星期几
    Hour() 返回一个时间的小时部分
    Minute() 返回一个日期的分钟部分
    Month() 返回一个日期的月份部分
    Now() 返回当前日期和时间
    Second() 返回一个时间的秒部分
    Time() 返回一个日期时间的时间部分
    Year() 返回一个日期的年份部分

    基本日期比较:

    SELECT cust_id, order_num FROM orders WHERE order_date = '2005-09-01';
    

    上面的匹配显然不合理,如果订单日期精确到时间的话,就无法匹配上了。

    SELECT cust_id, order_num FROM orders WHERE DATE(order_date) = '2005-09-01';
    

    匹配一个时间段内的数据:

    SELECT cust_id, order_num FROM orders WHERE DATE(order_date) BETWEEN '2005-09-01' and '2005-09-30';
    优化后
    SELECT cust_id, order_num FROM orders WHERE YEAR(order_date) = 2005 and MONTH(order_date) = 9;
    
    数值处理函数
    函数 说明
    Abs() 返回一个数的绝对值
    Cos() 返回一个角度的余弦
    Exp() 返回一个数的指数值
    Mod() 返回除操作的余数
    Pi() 返回圆周率
    Rand() 返回一个随机数
    Sin() 返回一个角度的正弦
    Sqrt() 返回一个数的平方根
    Tan() 返回一个角度的正切

    相关文章

      网友评论

          本文标题:计算字段和数值处理函数

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