zoukankan      html  css  js  c++  java
  • 读书笔记--SQL必知必会08--使用函数处理数据

    8.1 函数

    每个DBMS都有特定的函数。事实上,只有少数的几个函数被所有主要DBMS同时支持。
    实现同一功能的函数,在不同的DBMS中的名称和语法极有可能不同,也就是说SQL函数不可移植的。
    可移植(portable),所编写的代码可以在多个系统上运行。
    根据实际需要谨慎使用函数,并确保做好代码注释,便于以后的理解和维护。

    8.2 使用函数

    大多数SQL支持以下类型的函数:

    8.2.1 文本处理函数

    例如:将文本转换为大写的UPPER()函数

    MariaDB [sqlbzbh]> SELECT vend_name, UPPER(vend_name) AS vend_name_upcase FROM Vendors ORDER BY vend_name;
    +-----------------+------------------+
    | vend_name       | vend_name_upcase |
    +-----------------+------------------+
    | Bear Emporium   | BEAR EMPORIUM    |
    | Bears R Us      | BEARS R US       |
    | Doll House Inc. | DOLL HOUSE INC.  |
    | Fun and Games   | FUN AND GAMES    |
    | Furball Inc.    | FURBALL INC.     |
    | Jouets et ours  | JOUETS ET OURS   |
    +-----------------+------------------+
    6 rows in set (0.00 sec)
    
    MariaDB [sqlbzbh]> 
    

    例如:SOUNDEX()函数可以匹配所有类似发音的数据。

    MariaDB [sqlbzbh]> SELECT cust_name, cust_contact FROM Customers;
    +---------------+--------------------+
    | cust_name     | cust_contact       |
    +---------------+--------------------+
    | Village Toys  | John Smith         |
    | Kids Place    | Michelle Green     |
    | Fun4All       | Jim Jones          |
    | Fun4All       | Denise L. Stephens |
    | The Toy Store | Kim Howard         |
    +---------------+--------------------+
    5 rows in set (0.00 sec)
    
    MariaDB [sqlbzbh]> 
    MariaDB [sqlbzbh]> SELECT cust_name, cust_contact FROM Customers WHERE cust_contact = 'Michael Green';
    Empty set (0.00 sec)
    
    MariaDB [sqlbzbh]> 
    MariaDB [sqlbzbh]> SELECT cust_name, cust_contact FROM Customers WHERE SOUNDEX(cust_contact) = SOUNDEX('Michael Green');
    +------------+----------------+
    | cust_name  | cust_contact   |
    +------------+----------------+
    | Kids Place | Michelle Green |
    +------------+----------------+
    1 row in set (0.00 sec)
    
    MariaDB [sqlbzbh]> 
    

    8.2.2 日期和时间处理函数

    日期和时间处理函数虽然非常重要,但在各个DBMS中很不一致,可移植性最差。
    大多数DBMS具有比较日期、日期运算、选择日期格式等函数。
    在MySQL和MariaDB中,也具有各种日期处理函数,例如:YEAR()函数可以从日期中提取年份。

    MariaDB [sqlbzbh]> SELECT * FROM Orders;
    +-----------+---------------------+------------+
    | order_num | order_date          | cust_id    |
    +-----------+---------------------+------------+
    |     20005 | 2012-05-01 00:00:00 | 1000000001 |
    |     20006 | 2012-01-12 00:00:00 | 1000000003 |
    |     20007 | 2012-01-30 00:00:00 | 1000000004 |
    |     20008 | 2012-02-03 00:00:00 | 1000000005 |
    |     20009 | 2012-02-08 00:00:00 | 1000000001 |
    +-----------+---------------------+------------+
    5 rows in set (0.00 sec)
    
    MariaDB [sqlbzbh]> 
    MariaDB [sqlbzbh]> SELECT order_num FROM Orders WHERE YEAR(order_date) = 2012;
    +-----------+
    | order_num |
    +-----------+
    |     20005 |
    |     20006 |
    |     20007 |
    |     20008 |
    |     20009 |
    +-----------+
    5 rows in set (0.00 sec)
    
    MariaDB [sqlbzbh]> 
    

    8.2.3 数值处理函数

    数值处理函数仅仅处理数值数据。
    一般主要用于代数、三角或几何运算,使用不频繁。
    在主要的DBMS中,数值函数最一致,可移植性最高。

    常见的数值处理函数:

    ABS() --- 返回一个数的绝对值
    COS() --- 返回一个角度的余弦
    EXP() --- 返回一个数的指数值
    PI() --- 返回圆周率
    SIN() --- 返回一个角度的正弦
    SQRT() --- 返回一个数的平方根
    TAN() --- 返回一个角度的正切
    
    MariaDB [sqlbzbh]> SELECT ABS(-9);
    +---------+
    | ABS(-9) |
    +---------+
    |       9 |
    +---------+
    1 row in set (0.00 sec)
    
    MariaDB [sqlbzbh]> 
    MariaDB [sqlbzbh]> SELECT PI();
    +----------+
    | PI()     |
    +----------+
    | 3.141593 |
    +----------+
    1 row in set (0.00 sec)
    
    MariaDB [sqlbzbh]> 
    
  • 相关阅读:
    Uri编码,包括javascript前端与C#服务器端
    HttpWebResponse类
    HTTP报文
    HTTP权威指南阅读记录
    XMPP通讯开发-1
    开源安卓播放器:Dolphin Player 简单分析
    Spring MVC框架
    Median of Two Sorted Arrays (找两个序列的中位数,O(log (m+n))限制) 【面试算法leetcode】
    C语言指针5分钟教程
    2013中国互联网安全大会---关于季昕华老师的分享(不喜请勿入!)
  • 原文地址:https://www.cnblogs.com/anliven/p/6216337.html
Copyright © 2011-2022 走看看